您好,欢迎访问三七文档
精编WORD文档下载可编缉打印下载文档,远离加班熬夜动漫手机壁纸篇一:Android-图片处理与动画第四章图片处理手机应用离不开图片。图片不但可以给应用带来美观的界面,而且可以为用户提供丰富的功能和体验,在当下很难想象一个完全由文本组成的手机软件;而在开发过程中,对图片的加载,缓存,显示等处理又会直接影响整个项目的应能。所以,在Android中对图片处理的重要性不言而喻。本章中读者应该着重掌握如下内容:(1)使用Matrix对图片进行变换(2)Bitmap的操作(3)图片异步加载框架的使用4.1图片处理4.1.1使用Style和Theme创建样式与主题如果我们平时注意观察了那些成熟的Android应用,就会发现它们大都使用一种统一的风格和样式贯穿整个项目,例如统一的背景色或背景图片,统一的标题栏,统一的按钮样式,统一的字体等等。而这种“统一”就来自于Style(样式)和Theme(主题)的使用1.StyleStyle从本质上讲就是一些属性的集合,例如:精编WORD文档下载可编缉打印下载文档,远离加班熬夜layout_width,layout_height,textSize,textColor等等,Style将这些属性定义在xml文件中,供其他布局文件中的控件引用。其角色类似于页面中的css,将样式单独抽离出来,方便修改和重用。Style的定义Style定义在styles.xml中,创建在res/values/目录下,代码如下:<?xmlversion=1.0encoding=utf-8?><resources><stylename=itemTitle><itemname=android:textSize>25sp</item><itemname=android:textStyle>bold</item></style></resources>上面代码中定义了一个名为itemTitle的样式,它包含textSize,textStyle两个属性。Style的使用Style可以在布局文件中通过名字来引用,代码如下:<TextViewstyle=@style/itemTitleandroid:text=测试样式/>精编WORD文档下载可编缉打印下载文档,远离加班熬夜2.ThemeTheme可以说和Style是完全一样的,只不过Theme是针对Activity或整个项目的。Theme的定义Theme定义在theme.xml中,创建在res/values/目录下,代码如下:<?xmlversion=1.0encoding=utf-8?><resources><colorname=custom_background_color>#FFFFFFFF</color><stylename=RiverThemeparent=android:Theme.Light><itemname=android:windowBackground>@color/custom_background_color</item></style></resources>上面代码中定义了一个名为RiverTheme的主题,它包含一个windowBackgroud属性。这里继承了系统的theme.light,一般theme是继承的,这样可以对默认的风格不必重复定义。本例定义了一个背景色。这里背景色要单独声明,不能在item元素中直接写颜色值,会提示语法错误。精编WORD文档下载可编缉打印下载文档,远离加班熬夜Theme的使用Theme可以在Manifest文件中通过名字来引用,代码如下:<activity.............android:theme=@style/RiverTheme>4.1.2Matrix实现图片的几何操作在Android中,若想对图片进行缩放,旋转等操作,就需要使用Matrix类。Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种。下面的代码展示了实现缩放和旋转两种操作的步骤://根据图片资源创建相应的Bitmap对象myBmp=BitmapFactory.decodeResource(getResources(),R.drawable.im01);//获取图片的原始宽高bmpWidth=myBmp.getWidth();bmpHeight=myBmp.getHeight();//实例化matrixMatrixmatrix=newMatrix();//设定Matrix属性x,y缩放比例为1.5matrix.postScale(1.5F,1.5F);//顺时针旋转45度matrix.postRotate(45.0F);//根据Matrix的设定产生新的Bitmap对象精编WORD文档下载可编缉打印下载文档,远离加班熬夜newBmp=Bitmap.createBitmap(myBmp,0,0,bmpWidth,bmpHeight,matrix,true);在上面代码中,matrix的方法postScale和postRotate分别用来对图片的缩放和旋转进行设定。缩放和旋转都围绕着一个中心点来进行,在默认情况下,中心点为(0,0),该点位于图片的物理中心。实例BitmapDemo演示了对图片的旋转和缩放,如图4-1所示,拖动界面上方的拖动条(SeekBar),可以顺时针旋转图片;点击下方按钮,可以放大图片。图4-1图片的旋转和缩放布局文件main.xml内容如下:<?xmlversion=1.0encoding=utf-8?><RelativeLayoutxmlns:android=schemas.android.com/apk/res/androidandroid:layout_width=fill_parentandroid:layout_height=fill_parent><!--拖动条--><SeekBarandroid:id=@+id/seekBarIdandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:layout_alignParentTop=true/>精编WORD文档下载可编缉打印下载文档,远离加班熬夜<!--图片--><ImageViewandroid:id=@+id/imageviewandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:src=@drawable/im01android:layout_centerInParent=true/><!--按钮--><Buttonandroid:id=@+id/bigandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=放大android:layout_alignParentBottom=trueandroid:layout_centerHorizontal=true/></RelativeLayout>BitmapDemoActivity.java代码如下:packagecom.spl;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;精编WORD文档下载可编缉打印下载文档,远离加班熬夜importandroid.graphics.Matrix;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.SeekBar;publicclassBitmapDemoActivityextendsActivity{ImageViewmyImageView;BitmapmyBmp,newBmp;intbmpWidth,bmpHeight;SeekBarseekbarRotate;Buttonbig;floatrotAngle,scaleRate;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);myImageView=(ImageView)findViewById(R.id.imageview);精编WORD文档下载可编缉打印下载文档,远离加班熬夜//根据图片资源创建相应的Bitmap对象myBmp=BitmapFactory.decodeResource(getResources(),R.drawable.im01);//获取图片的原始宽高bmpWidth=myBmp.getWidth();bmpHeight=myBmp.getHeight();scaleRate=1.2F;//实例化matrixMatrixmatrix=newMatrix();//设定Matrix属性x,y缩放比例为1.5matrix.postScale(1.5F,1.5F);//顺时针旋转45度matrix.postRotate(45.0F);//根据Matrix的设定产生新的Bitmap对象newBmp=Bitmap.createBitmap(myBmp,0,0,bmpWidth,bmpHeight,matrix,true);seekbarRotate=(SeekBar)findViewById(R.id.seekBarId);seekbarRotate.setOnSeekBarChangeListener(onRotate);big=(Button)findViewById(R.id.big);big.setOnClickListener(bigClick);}//按钮点击监听器精编WORD文档下载可编缉打印下载文档,远离加班熬夜privateOnClickListenerbigClick=newOnClickListener(){@Override{publicvoidonClick(Viewarg0){Matrixmatrix=newMatrix();//设定Matrix属性x,y缩放比例为1.5matrix.postScale(scaleRate,scaleRate);newBmp=Bitmap.createBitmap(myBmp,0,0,bmpWidth,bmpHeight,matrix,true);myImageView.setImageBitmap(newBmp);BitmapDemoActivity.this.setTitle(scale:+scaleRate);scaleRate*=1.2F;//让放大比例持续增大};//拖动条监听器}privateSeekBar.OnSeekBarChangeListeneronRotate=newSeekBar.OnSeekBarChangeListener()publicvoidonStopTrackingTouch(SeekBarseekBar){}
本文标题:动漫手机壁纸
链接地址:https://www.777doc.com/doc-8189444 .html