日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解

發(fā)布時(shí)間:2023/12/10 Android 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

主要思想:

將一個(gè)view設(shè)計(jì)成多層:背景層,含中獎(jiǎng)信息等;

遮蓋層,用于刮獎(jiǎng),使用關(guān)聯(lián)一個(gè)Bitmap的Canvas

在該Bitmap上,使用它的canvas.drawPath的api來(lái)處理 手勢(shì)滑動(dòng)(類(lèi)似刮獎(jiǎng)的動(dòng)作)

使用paint.setXfermode 來(lái)進(jìn)行消除手勢(shì)滑動(dòng)區(qū)域

public class GuaView extends View {

private Bitmap mBitmap; //遮蓋的圖層

private Canvas mCanvas; //繪制遮蓋圖層

private Paint mOuterPaint;

private Path mPath;

private float mLastX;

private float mLastY;

private Bitmap mCoverBitmap; //遮蓋圖

private int mWidth,mHeight;

private Paint mInnerPaint;

private String mInfo;

public GuaView(Context context) {

this(context,null);

}

public GuaView(Context context,AttributeSet attrs) {

super(context,attrs);

init();

}

private void init() {

mPath = new Path();

mOuterPaint = new Paint();

mInnerPaint = new Paint();

mCoverBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.fg_guaguaka);

mInfo = "¥ 5 0 0";

}

@Override

protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec,heightMeasureSpec);

mWidth = mCoverBitmap.getWidth();

mHeight = mCoverBitmap.getHeight();

setMeasuredDimension(mWidth,mHeight);

mBitmap = Bitmap.createBitmap(mWidth,mHeight,Bitmap.Config.ARGB_8888);

mCanvas = new Canvas(mBitmap);

mCanvas.drawBitmap(mCoverBitmap,null);

setOuterPaint();

setInnerPaint();

}

private void setInnerPaint() {

mInnerPaint.setColor(Color.RED);

mInnerPaint.setStyle(Paint.Style.STROKE);

mInnerPaint.setStrokeCap(Paint.Cap.ROUND);

mInnerPaint.setStrokeJoin(Paint.Join.ROUND);

mInnerPaint.setAntiAlias(true);

mInnerPaint.setDither(true); //防抖

mInnerPaint.setStrokeWidth(5);

mInnerPaint.setTextSize(100);

mInnerPaint.setTextAlign(Paint.Align.CENTER);

}

private void setOuterPaint() {

mOuterPaint.setColor(Color.GREEN);

mOuterPaint.setStyle(Paint.Style.STROKE);

mOuterPaint.setStrokeCap(Paint.Cap.ROUND);

mOuterPaint.setStrokeJoin(Paint.Join.ROUND);

mOuterPaint.setAntiAlias(true);

mOuterPaint.setDither(true); //防抖

mOuterPaint.setStrokeWidth(20);

}

@Override //Path

public boolean onTouchEvent(MotionEvent event) {

float x = event.getX();

float y = event.getY();

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

mLastX = x;

mLastY = y;

mPath.moveTo(x,y);

break;

case MotionEvent.ACTION_MOVE:

float deltaX = Math.abs(x - mLastX);

float deltaY = Math.abs(y - mLastY);

if (deltaX > 5 || deltaY > 5) {

mPath.lineTo(x,y);

}

mLastX = x;

mLastY = y;

break;

case MotionEvent.ACTION_UP:

break;

}

invalidate();//調(diào)用onDraw

return true;

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawColor(Color.parseColor("#bbbbbb")); //背景底色 灰色

canvas.drawText(mInfo,mWidth / 2,mHeight / 4 * 3,mInnerPaint); //繪制文本

canvas.drawBitmap(mBitmap,null); //繪制mBitmap 這是一個(gè)可變的bitmap,通過(guò)mCanvas繪制,首先繪制了mCoverBitmap

drawPath();

}

private void drawPath() {

//使用該mode:dst和src相交后, 只保留dst,且除去相交的部份

mOuterPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));

mCanvas.drawPath(mPath,mOuterPaint);

}

}

Paint.Join 連續(xù)畫(huà)筆銜接時(shí):

MITER 在外邊緣以一個(gè)銳角連接

ROUND 以圓弧

BEVEL 以直線

Paint.Cap 指定對(duì)于 線和路徑(lines and paths) 的開(kāi)始和結(jié)束點(diǎn)的處理方式:

BUTT? ends with the path? 不超越它

ROUND? with the center at the end of the path 半圓

SQUARE? with the center at the end of the path 方形

總結(jié)

如果覺(jué)得編程之家網(wǎng)站內(nèi)容還不錯(cuò),歡迎將編程之家網(wǎng)站推薦給程序員好友。

本圖文內(nèi)容來(lái)源于網(wǎng)友網(wǎng)絡(luò)收集整理提供,作為學(xué)習(xí)參考使用,版權(quán)屬于原作者。

小編個(gè)人微信號(hào) jb51ccc

喜歡與人分享編程技術(shù)與工作經(jīng)驗(yàn),歡迎加入編程之家官方交流群!

總結(jié)

以上是生活随笔為你收集整理的android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。