日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:30日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频自拍| 水蜜桃久久夜色精品一区的特点| 在线日韩成人| 久久国产精品久久w女人spa| 美女精品在线| 久久九九国产| 久久高清一区| 黄色日韩精品| 精品国产免费人成网站| 精品美女在线视频| 国产在线观看91一区二区三区| 69精品国产久热在线观看| 久久精品播放| 精品国产亚洲一区二区在线观看| 模特精品在线| 综合国产视频| 一区二区视频欧美| 亚洲二区视频| 久久午夜视频| 日本欧美久久久久免费播放网| 婷婷五月色综合香五月| 欧美日韩一区二区三区在线电影| 国产欧美自拍| 精品美女视频| 蜜桃久久av| 日韩三区四区| 亚久久调教视频| 日韩和欧美一区二区三区| 日本午夜精品久久久| 三级在线观看一区二区| 亚洲综合福利| 国产精品高潮呻吟久久久久| 麻豆国产精品一区二区三区| 日韩和的一区二在线| 国产一区亚洲| 喷白浆一区二区| 国产剧情一区二区在线观看| 精品视频一区二区三区四区五区 | 成人综合一区| 日韩av免费| 国产一区二区三区亚洲综合| 日韩高清不卡一区二区| 亚洲综合不卡| 日本色综合中文字幕| 亚洲日本免费电影| 日本aⅴ亚洲精品中文乱码 | 日韩三级一区| 国产一区二区三区天码| 欧美a级片一区| 日韩高清在线观看一区二区| 国产三级一区| 成人台湾亚洲精品一区二区| 久久蜜桃精品| 久久精品99国产精品| 国产成人精品亚洲日本在线观看| 免费看欧美美女黄的网站| 国产精品白丝久久av网站| 久久国产成人午夜av影院宅| 国产日韩一区| 波多野结衣一区| **爰片久久毛片| 久久在线免费| 大香伊人久久精品一区二区| 另类国产ts人妖高潮视频| 中文字幕av一区二区三区人 | 日本不卡视频一二三区| 国产精品久久久久久久久久久久久久久 | 欧美日韩国产一区二区在线观看| 国产精品天堂蜜av在线播放| 午夜欧美理论片| 欧美日韩国产传媒| 蜜臀va亚洲va欧美va天堂| 日韩高清欧美激情| 日韩av午夜在线观看| 福利一区二区免费视频| 日韩欧美激情| 国语精品一区| 欧洲精品一区二区三区| 久久激情综合网| 999国产精品999久久久久久| 国产日本精品| 久久av在线| 欧美日韩一区二区三区视频播放| 国产精品亚洲综合在线观看| 999国产精品永久免费视频app| 国产日韩欧美高清免费| 日本精品在线中文字幕| 日本不卡视频一二三区| 亚洲网站视频| 国产一区二区三区四区五区 | 国产精品一区二区三区av| 亚洲欧洲一区| 成人精品中文字幕| 精品视频高潮| 亚洲精一区二区三区| 99在线精品免费视频九九视| 国产一区二区三区四区五区传媒| 亚洲一区二区三区无吗| 久久精品欧美一区| 精品香蕉视频| 精品国产欧美日韩| 亚洲日本久久| 国产美女久久| 国产一区二区三区天码| 日韩成人综合| 激情欧美日韩一区| 国产精品嫩模av在线| 亚洲成人一区| 激情视频一区二区三区| 99国产成+人+综合+亚洲欧美| 精品中国亚洲| 欧美日韩18| 日本成人一区二区| 亚洲一区久久| 亚洲精品网址| 激情综合激情| 九一国产精品| 性欧美xxxx免费岛国不卡电影| 亚洲黄色中文字幕| 国产亚洲观看| 青青青国产精品| 欧美日韩中文| 欧美一区二区三区久久精品| 欧美一区网站| 国产欧美日韩免费观看| 欧美永久精品| 国产精品乱战久久久| 国产探花一区| 久久97久久97精品免视看秋霞| 久久av网站| 成人在线超碰| 久久久国产精品一区二区中文| 日本美女一区| 久久高清免费| 99热国内精品| 欧美专区一区二区三区| 精品一区免费| 亚洲在线一区| 亚洲精品日韩久久| 欧美另类中文字幕| 麻豆91精品视频| 国产成人精品一区二区三区视频| 欧美日韩国产免费观看视频| 欧美一区在线观看视频| 国产高清视频一区二区| 精品亚洲成人| 不卡中文字幕| 中文字幕一区二区精品区| 麻豆国产精品视频| 久久影院午夜精品| 日韩中文字幕不卡| 国产99久久| 亚洲专区视频| 国产精品色网| 日韩国产一区二| 国产视频一区二区在线播放| 国产精品一区二区精品视频观看| 久久免费影院| 久久久久99| 免费人成在线不卡| 国产图片一区| 91精品国产91久久久久久黑人| 日韩视频一区| 日本色综合中文字幕| 国产乱论精品| 日韩不卡视频在线观看| 蜜臀精品久久久久久蜜臀 | 国产精品日本| 日韩亚洲精品在线观看| 久久精品资源| 99精品一区| 亚洲一级大片| 精品免费av一区二区三区| 亚洲性图久久| 日本成人中文字幕在线视频| 欧美激情久久久久久久久久久| 久久精品国产大片免费观看| 亚洲欧洲一区| 美女久久99| 97精品国产福利一区二区三区| 欧美亚洲国产精品久久| 亚洲欧美网站在线观看| 久久香蕉网站| 午夜在线精品偷拍| 国产精品tv| 亚洲h色精品| 激情视频一区二区三区| 免费美女久久99| 国产亚洲精品精品国产亚洲综合| 久久久精品久久久久久96 | 国产精品v一区二区三区| 日韩一区二区三区精品| 久久久久久美女精品| 蜜臀精品一区二区三区在线观看 | 麻豆视频在线观看免费网站黄| 日韩在线观看不卡| 日韩高清一级| 国产精品黑丝在线播放| 日韩在线观看不卡| 中文字幕人成乱码在线观看|