本文实例为大家分享了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
公开课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绘图技巧使用详解