Android绘图技巧使用详解

  

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

  

<强> XML绘图

  

位图         & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;位图xmlns: android=" http://schemas.android.com/apk/res/android "   android: src=" https://www.yisu.com/zixun/@drawable giao "/祝辞      

形状         & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;形状xmlns: android=" http://schemas.android.com/apk/res/android "   android:形状=熬匦巍北?   & lt;梯度   android: startColor=" # FF5DA2FF”   android: endColor=" # 805 fbbef "   android:角=" 45 "/比;   & lt;填充   android:底部=" 7 dp "   android:顶级=" 7 dp "   android:左=" 7 dp "   android:对=? dp/祝辞   & lt;角落android:=" 8 dp/半径比;   & lt;/shape>      

层(实现Photoshop中类似图层的概念)

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; layer-list xmlns: android=" http://schemas.android.com/apk/res/android "比;   & lt;项目android:可拉的=癅drawable/default_head”/比;   & lt;项目android:可拉的=癅drawable/default_head”   android:左=" 10底”   android:对=" 10底”   android:顶级=" 10底”   android:底部=" 10底"/比;   & lt;项目android:可拉的=癅drawable/giao”   android:左=" 200 dp”   android:对=" 200 dp”   android:顶级=" 200 dp”   android:底部=" 200 dp/比;   & lt; !——图层效果——比;   & lt;/layer-list>      

选择器(帮助开发者实现静态绘图中的时间反馈)

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt;选择xmlns: android=" http://schemas.android.com/apk/res/android "比;   & lt;项目android: state_pressed=" true "比;   & lt;形状android:形状=熬匦巍北?   & lt;固体android:颜色=" # 33 fd0000”/比;   & lt;角落android:=" 5 dp/半径比;   & lt;填充android:左=" 10 dp”   android:对=" 10 dp”   android:顶级=" 10 dp”   android:底部=" 10 dp/比;   & lt;/shape>   & lt;/item>   & lt; item>   & lt;形状android:形状=熬匦巍北?   & lt;固体android:颜色=" # ffffffff”/比;   & lt;角落android:=" 5 dp/半径比;   & lt;填充android:左=" 10 dp”   android:对=" 10 dp”   android:顶级=" 10 dp”   android:底部=" 10 dp/比;   & lt;/shape>   & lt;/item>   & lt; !——点击反馈效果——比;   & lt;/selector>      

<强> Android绘图技巧

  

  

Canvas.save ();

  

可以理解为保存画布,作用是将之前的所有已经绘制图像保存起来,让后续的操作就好像在一个新的图层上操作一样

  

Canvas.restore ();

  

可以理解为Photoshop中的合并图层操作,作用是将保存()之后绘制的所有的图像与保存()之前的图像进行合并

  

Canvas.translate ();

  

坐标系的平移

  

Canvas.rotate ();

  

坐标系的旋转

  

<强>层图层

  

特别注意的是saveLayerAlpha()与()要恢复同时使用,才能够在画布上画出多个层次,就是花多少层就要有多少对两个函数!

        @Override   保护空白>   bitmap.getPixels(像素,抵消,跨步,x, y,宽度、高度),      

参数含义如下:

  
      <李>像素:接受位图颜色值的数组   <李>抵消:写入到像素[]中的第一个索引值   <李>大步:像素[]的行间距李   <李> x:从位图中读取的第一个像素的x坐标值   <李> y:从位图中读取的第一个像素的y坐标值   <李>宽度:每一行中读取的像素宽度   <李>高度:读取的行数
      李   
  

<强>画笔特效处理

  

PorterDuffXfermode   

 Android绘图技巧使用详解

        公开课FilletView扩展视图{   私人位图的位图;   私人油漆涂料;   公共FilletView(上下文语境){   超级(上下文);   针对我国有关矿山截污库坝();   }      公共FilletView(上下文语境,@Nullable AttributeSet attrs) {   超级(上下文,attrs);   针对我国有关矿山截污库坝();   }      公共FilletView(上下文语境,@Nullable AttributeSet attrs, int defStyleAttr) {   超级(上下文、attrs defStyleAttr);   针对我国有关矿山截污库坝();   }   私人空间针对我国有关矿山截污库坝(){   位图=BitmapFactory.decodeResource (getresource (), R.drawable.ask);=Bitmap.createBitmap (bitmap.getWidth (), bitmap.getHeight (), Bitmap.Config.ARGB_8888);   帆布画布=新画布(出);   涂=new ();   paint.setAntiAlias(真正的);   canvas.drawRoundRect (0, 0, bitmap.getWidth (), bitmap.getHeight(), 80年,80年,油漆);   油漆。setXfermode(新PorterDuffXfermode (PorterDuff.Mode.SRC_IN));   canvas.drawBitmap(位图,0,0,油漆);   }      @Override   保护空白>   私人空间useBitmapShader(帆布画布){   @SuppressLint (“DrawAllocation”)   位图的位图=BitmapFactory.decodeResource (getresource (), R.drawable.default_head);   @SuppressLint (“DrawAllocation”)   BitmapShader材质=new BitmapShader(位图,Shader.TileMode.REPEAT Shader.TileMode.REPEAT);   @SuppressLint (“DrawAllocation”)   涂漆=new ();   paint.setShader(材质);   canvas.drawCircle(500200200、油漆);   }

Android绘图技巧使用详解