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

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

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

瀏覽:3日期: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
相關文章:
主站蜘蛛池模板: 福建珂朗雅装饰材料有限公司「官方网站」 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 世纪豪门官网 世纪豪门集成吊顶加盟电话 世纪豪门售后电话 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | 艺术涂料|木纹漆施工|稻草漆厂家|马来漆|石桦奴|水泥漆|选加河南天工涂料 | 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 江苏大隆凯科技有限公司| 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 陕西视频监控,智能安防监控,安防系统-西安鑫安5A安防工程公司 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 电动球阀_不锈钢电动球阀_电动三通球阀_电动调节球阀_上海湖泉阀门有限公司 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 |