电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Android刮刮樂效果-proterDuffXfermode的示例代碼

瀏覽:2日期:2022-09-21 11:49:55

先看看實現的效果

Android刮刮樂效果-proterDuffXfermode的示例代碼

這個場景主要是模擬我們有些app里面的刮刮樂中獎的效果,主要是利用Android的proterDuffXfermode這個類去實現的。

proterDuffXfermode

在用Android中的Canvas進行繪圖時,可以通過使用PorterDuffXfermode將所繪制的圖形的像素與Canvas中對應位置的像素按照一定規則進行混合,形成新的像素值,從而更新Canvas中最終的像素顏色值,這樣會創建很多有趣的效果。PorterDuffXfermode的功能十分的強大,其他的應用場景這里就不多介紹,主要是看,刮刮樂的實現和原理。

public class PorterDuffXfermode extends Xfermode

PorterDuffXfermode 繼承了Xfermode,使用的時候注意的API是Paint.setXfermode(Xfermode xfermode)。PorterDuffXfermode支持以下十幾種像素顏色的混合模式,分別為:CLEAR、SRC、DST、SRC_OVER、DST_OVER、SRC_IN、DST_IN、SRC_OUT、DST_OUT、SRC_ATOP、DST_ATOP、XOR、DARKEN、LIGHTEN、MULTIPLY、SCREEN。這里是使用PorterDuff.Mode.DST_IN,取兩層繪制交集,顯示下層。這個模式,來進行操作的。

Android刮刮樂效果-proterDuffXfermode的示例代碼

自定義view繼承ImageView代碼比較少,我就直接來了

public class ProterDuffXfermodeView extends AppCompatImageView { private Bitmap mBgBitmap,mFgBitmap; private Paint mPaint; private Canvas mCanvas; private Path mPath; public ProterDuffXfermodeView(Context context, AttributeSet attrs) { super(context,attrs); init(); } private void init() { //創建Paint mPaint=new Paint(); //設置透明度 mPaint.setAlpha(0); //設置Xfermode模式 mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); //Paint類型 mPaint.setStyle(Paint.Style.STROKE); //Paint.Join.MITER-銳角,ROUND-圓弧,BEVEL-直線 mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeWidth(50); //線帽 mPaint.setStrokeCap(Paint.Cap.ROUND); mPath=new Path(); Drawable drawable =getDrawable(); mBgBitmap=((BitmapDrawable)drawable).getBitmap(); mFgBitmap=Bitmap.createBitmap(mBgBitmap.getWidth(),mBgBitmap.getHeight(),Bitmap.Config.ARGB_8888); mCanvas=new Canvas(mFgBitmap); mCanvas.drawColor(Color.GRAY); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mPath.reset(); mPath.moveTo(event.getX(), event.getY()); break; case MotionEvent.ACTION_MOVE: mPath.lineTo(event.getX(), event.getY()); break; } mCanvas.drawPath(mPath, mPaint); invalidate(); return true; } @Override protected void onDraw(Canvas canvas) { canvas.drawBitmap(mBgBitmap, 0, 0,null); canvas.drawBitmap(mFgBitmap, 0, 0,null); }}

首先有兩個bitmap,一個是背景(刮刮樂的照片),一個是前置的(灰色遮擋)。這里解釋一下幾個API

//設置畫筆的樣式 mPaint.setStyle(Paint.Style.FILL);//填充內容 mPaint.setStyle(Paint.Style.FILL_AND_STROKE); mPaint.setStyle(Paint.Style.STROKE);//描邊 //線帽 mPaint.setStrokeCap(Paint.Cap.BUTT);//沒有 mPaint.setStrokeCap(Paint.Cap.ROUND);//圓的 mPaint.setStrokeCap(Paint.Cap.SQUARE);//方形mPaint.setStrokeJoin(Paint.Join.MITER);//銳角mPaint.setStrokeJoin(Paint.Join.ROUND);//圓弧mPaint.setStrokeJoin(Paint.Join.BEVEL);//直線

別的API都好理解,這里就不介紹了。onTouchEvent事件分發主要使用了PathPath封裝了由直線和曲線(二次,三次貝塞爾曲線)構成的幾何路徑。你能用Canvas中的drawPath來把這條路徑畫出來(同樣支持Paint的不同繪制模式),也可以用于剪裁畫布和根據路徑繪制文字。我們有時會用Path來描述一個圖像的輪廓,所以也會稱為輪廓線(輪廓線僅是Path的一種使用方法,兩者并不等價)。Path詳解 如果不了解可以看下這篇文章moveTo 移動下一次操作的起點位置lineTo 添加上一個點到當前點之間的直線到Path主要用到了這兩個api最后就是onDraw().

XML直接引用自定義view即可。當然,實現這個功能可能還有其它寫法,這里只是提供一種思路,也是最簡單的實現。

歡迎關注公眾號 拖鞋王子豬 一起開心起來。

到此這篇關于Android刮刮樂效果-proterDuffXfermode的文章就介紹到這了,更多相關Android刮刮樂內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 管形母线,全绝缘铜管母线厂家-山东佰特电气科技有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 芜湖厨房设备_芜湖商用厨具_芜湖厨具设备-芜湖鑫环厨具有限公司 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 广州各区危化证办理_危险化学品经营许可证代办| 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 99文库_实习生实用的范文资料文库站 | 宝鸡市人民医院 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 成都思迪机电技术研究所-四川成都思迪编码器 | 北京软件开发_软件开发公司_北京软件公司-北京宜天信达软件开发公司 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 |