Android自定义控件实现刮刮卡效果例子
程序员文章站
2022-03-01 14:53:26
...
刮刮奖无非就是文本、或者图片、提前绘制一下、然后在其上绘制刮奖层、然后把用户触摸绘制上去、这样消失以后就能看到背后的奖了、整个应用是基于一个建议的画板实现的、我们的刮刮卡需要掌握绘图、当然了这里不要求你有美术天分、会瞎涂鸦就可以了
首先在背后绘制一张图片、然后绘制一个遮盖层、然后我们绘画的过程就是擦除遮盖层
@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