本文实例为大家分享了Android自定义橡皮擦效果,使用贝塞尔曲线处理曲线转折处
公开课picFingerToTest扩展视图{ 私人油漆涂料; 私人位图decodeResourceSRC; 私人位图createBitmapDST;//手指路径,使用贝塞尔路线 私人道路路径; 私人perX浮动; 私人perY浮动; 公共picFingerToTest(上下文语境,AttributeSet attrs) { 超级(上下文,attrs);//1,设置禁用硬件设置 setLayerType(视图。LAYER_TYPE_SOFTWARE, null);//2,设置手指画笔 涂=new (); paint.setAntiAlias(真正的); paint.setColor (Color.RED); paint.setStyle (Paint.Style.STROKE); paint.setStrokeWidth (45);//3、生成图像手指源目标//源 R.drawable decodeResourceSRC=https://www.yisu.com/zixun/BitmapFactory.decodeResource (getresource ()。欢迎,null);//目标 createBitmapDST=Bitmap.createBitmap (decodeResourceSRC.getWidth (), decodeResourceSRC.getHeight (), Config.ARGB_8888); 路径=new路径(); } @Override 保护空白> 公共空间onCreate () {//底边图片 ImageView ivTop=(ImageView) findViewByid (R.id.iv_top); 选项选择=new选项();//图片加载器,用于配置一些缩放比例,和像素单位 选择。inSampleSize=2;//制定加载器把原图片的宽高缩放到2/1的效果加载//获得外层图片,decodeResource方法默认获得的像素单位是RGB(红,绿,蓝),ARGB(α,红、绿、蓝) 位图topImage=BitmapFactory.decodeResources (R.drawable getResource ()。,选择);//创建一张空白图片,并且把图片想读单位指定为:ARGB 位图空白=Bitmap.createBitmap (topImage.getWidth (), topImage。获得,Config.ARGB_4444);//把上边的topImage画到空白图片上 帆布画布=新画布(空白);//把topImage画到空白图片上但是像素单位变成ARGB () 画布。drawBitmap (topImage, 0, 0, null); ivTop.setImageBitmap(空白); } 类MyOnTouchListoner实现OnTouchListener { @Override大众布尔ondraw(视图v MotionEvent事件){//是否是移动的事件 如果(event.getAction ()==MotionEvent.ACTION_MOVE) {//获得按下坐标 int x=(int) event.getX (); int y=(int) event.getY (); for (int i=x - 10;我& lt;x + 10;我+ +){ for (int j=y - 10;j & lt;y + 10;j + +) {//防止超出边界 如果(j祝辞=0,,blank.getHeight (),,我在=0,,我& lt;blank.getWidth ()) { 空白。setPixel (i, j, Color.TRANSPARENT); } } }//修改后的图片设置给ImageView ivTop.setImageBitmap(空白); } 返回true;//真正的消耗掉这次触摸事件。假不消耗 } } >之前以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android自定义橡皮擦效果