欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android自定义控件实现刮刮卡效果例子

程序员文章站 2022-03-01 14:53:26
...

刮刮奖无非就是文本、或者图片、提前绘制一下、然后在其上绘制刮奖层、然后把用户触摸绘制上去、这样消失以后就能看到背后的奖了、整个应用是基于一个建议的画板实现的、我们的刮刮卡需要掌握绘图、当然了这里不要求你有美术天分、会瞎涂鸦就可以了

Android自定义控件实现刮刮卡效果例子

首先在背后绘制一张图片、然后绘制一个遮盖层、然后我们绘画的过程就是擦除遮盖层

@Override
protected void onMeasure(int widthMeasureSpec, 
	int heightMeasureSpec)
{
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = getMeasuredWidth();
    int height = getMeasuredHeight();
    // 初始化bitmap
    mBitmap = Bitmap.createBitmap(width, height, 
		Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
    setUpOutPaint();
    //绘制这改成
    mCanvas.drawColor(Color.parseColor("#c0c0c0"));
}

我们准备把奖项改为字体、将字体绘制在屏幕的中间、那么直接把上例绘制图片改为绘制字体就行了、不过多了一个绘制字体画笔的设置

private Paint mBackPint = new Paint();
private Rect mTextBound = new Rect();
private String mText = "500,0000,000";
//初始化canvas的绘制用的画笔
private void setUpBackPaint()
{
    mBackPint.setStyle(Style.FILL);
    mBackPint.setTextScaleX(2f);
    mBackPint.setColor(Color.DKGRAY);
    mBackPint.setTextSize(22);
    mBackPint.getTextBounds(mText, 0, 
		mText.length(), mTextBound);
}
 
@Override
protected void onDraw(Canvas canvas)
{
    // canvas.drawBitmap(mBackBitmap, 0, 0, null);
    //绘制奖项
    canvas.drawText(mText, getWidth() / 2 
		- mTextBound.width() / 2,
            getHeight() / 2 + mTextBound.height()
			/ 2, mBackPint);
     
    drawPath();
    canvas.drawBitmap(mBitmap, 0, 0, null);
}

好了、到此已经完全实现了、大家按照例子、结合自己需求修改即可、里面所涉及的原理相信已经解释清楚了、如果没有理解的也没有关系、下面我把源代码分享给大家

源代码下载链接:http://dwtedx.com/download.html?bdkey=s/1i3DYT4h 密码:jarr