效果如下:

Android改变图片颜色的自定义控件(十)_第1张图片

理解:Xfermode的16总模式如图

Android改变图片颜色的自定义控件(十)_第2张图片

第一步:

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

更多相关文章

  1. android控件 ToggleButton的应用
  2. 整理的Android多种控件步骤
  3. android 修改图片的颜色
  4. 第四篇 Gallery控件
  5. android实现图片圆角化实现三种方法
  6. android的单个图片 上传服务器
  7. 控件:拖动条 --- SeekBar(改变屏幕亮度)
  8. 判断scrollview中某子控件是否可见

随机推荐

  1. android studio 导入 eclipse项目 报错 E
  2. 三种方式实现自定义圆形页面加载中效果的
  3. android布局时,左侧宽度固定而右侧textvie
  4. android Path类
  5. Android 搭建MVP+Retrofit+RxJava网络请
  6. Android至ViewPager添加切换动画——使用
  7. Activity 四种启动模式详细介绍
  8. 下载和安装Android Studio搭建Android集
  9. Android 日历提供器(三)
  10. [译]开/闭原则在Android中的实践