Android改变图片颜色的自定义控件(十)
16lz
2021-01-23
效果如下:
理解:Xfermode的16总模式如图
第一步:
packagecom.rong.activity;importcom.rong.test.R;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.PorterDuff.Mode;importandroid.graphics.PorterDuffXfermode;importandroid.graphics.Rect;importandroid.graphics.RectF;importandroid.util.AttributeSet;importandroid.view.View;/***改变图片颜色的自定义View*@author徐荣**/publicclassChangeImageColorViewextendsView{PaintmPaint;PorterDuffXfermodexfermode;Bitmapbitmap;intmBitWidth;intmBitHeight;intwidth;intheight;RectsrcRect;RectdstRect;RectFmRect;inti=0;publicChangeImageColorView(Contextcontext,AttributeSetattrs){super(context,attrs);initView();}privatevoidinitView(){//初始化画笔mPaint=newPaint();mPaint.setAntiAlias(true);mPaint.setColor(Color.BLUE);//设置Xfermodexfermode=newPorterDuffXfermode(Mode.SRC_IN);//获取图片源bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.robot);mBitWidth=bitmap.getWidth();mBitHeight=bitmap.getHeight();}@OverrideprotectedvoidonSizeChanged(intw,inth,intoldw,intoldh){super.onSizeChanged(w,h,oldw,oldh);//获取控件的宽高width=w;height=h;srcRect=newRect(0,0,width,height);dstRect=newRect(0,0,width,height);mRect=newRectF(0,0,width,height);i=width;}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);//相当于PS的新建图层intnum=canvas.saveLayer(0,0,width,height,mPaint,Canvas.ALL_SAVE_FLAG);//绘制图片canvas.drawBitmap(bitmap,srcRect,dstRect,mPaint);//设置图片混合模式mPaint.setXfermode(xfermode);//绘制动态区域canvas.drawRect(mRect,mPaint);//恢复混合模式mPaint.setXfermode(null);//合并图层canvas.restoreToCount(num);//更改区域的位置i=i-1;mRect.top=i;if(i==0){i=width;}//刷新UI,他会调用onDraw方法invalidate();}}
第二步
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/main_touchlayout"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical"><com.rong.activity.ChangeImageColorViewandroid:id="@+id/main_percentview"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerInParent="true"/></RelativeLayout>
Run
更多相关文章
- android控件 ToggleButton的应用
- 整理的Android多种控件步骤
- android 修改图片的颜色
- 第四篇 Gallery控件
- android实现图片圆角化实现三种方法
- android的单个图片 上传服务器
- 控件:拖动条 --- SeekBar(改变屏幕亮度)
- 判断scrollview中某子控件是否可见