Android刮彩票效果
来源:互联网 发布:同性电影推荐知乎 编辑:程序博客网 时间:2024/04/27 02:25
实现分析:
1.底部一张图片
2.图片头部是一个矩形遮挡图片
3.通过滑动监听,让矩形缺失,露出底部图片
主要代码如下:
private RectF rectf; private Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test); //头部 private Canvas headCanvas; private int width; private int height; // 开始绘制Path坐标 private float startX; private float startY; // 用来绘制划过的路径 private Path path = new Path(); // 划过多大距离开始绘制划过的路径 private static final int DIS = 20; // 画笔 private Paint paint; // 画笔size private int paintSize = 20; @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub width = getWidth(); height = getHeight(); paintSize = height / 5; rectf = new RectF(0, 0, width, height); // 底部的文字 canvas.drawBitmap(bitmap, null, rectf, null); // 挡住底部文字 canvas.drawBitmap(drawHead(), null, rectf, null); } // 头部的图层 private Bitmap drawHead() { Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888); headCanvas = new Canvas(bitmap); RectF rectF = new RectF(0, 0, width, height); paint = new Paint(); paint.setColor(Color.BLACK); // 画一个矩阵挡住底部 headCanvas.drawRect(rectF, paint); /* * 设置图层混合模式 Mode.SRC_OUT:在不相交的地方绘制 源图像 */ paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); paint.setAlpha(0); paint.setAntiAlias(true); paint.setStrokeWidth(paintSize); /* * 设置画笔的形状 */ paint.setStyle(Paint.Style.STROKE); // 前圆角 paint.setStrokeJoin(Paint.Join.ROUND); // 后圆角 paint.setStrokeCap(Paint.Cap.ROUND); // 绘制滑动路径 headCanvas.drawPath(path, paint); return bitmap; } // 刷新 public void setRefresh() { // 清除路径 path.rewind(); invalidate(); } // 切换图片 public void setImage(Bitmap bitmap) { path.rewind(); this.bitmap = bitmap; invalidate(); } @Override public boolean dispatchTouchEvent(MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startX = event.getX(); startY = event.getY(); // 移动起点 path.moveTo(startX, startY); invalidate(); break; case MotionEvent.ACTION_MOVE: float differenceX = Math.abs(event.getX() - startX); float differenceY = Math.abs(event.getY() - startY); if (differenceX >= DIS || differenceY >= DIS) { /* * 参数1,2:为控制点 参数3,4:为结束点 */ path.quadTo(startX, startY, event.getX(), event.getY()); startX = event.getX(); startY = event.getY(); } invalidate(); break; case MotionEvent.ACTION_UP: break; default: break; } return true; }
源码下载
0 0
- Android刮彩票效果
- js彩票效果
- 彩票项目(android)
- Android 彩票选号算法
- 彩票刮号
- 模拟彩票刮奖
- 彩票
- 彩票
- 彩票
- 彩票
- 彩票
- 彩票
- 彩票
- 彩票
- 彩票
- 彩票
- 【深入浅出IOS开发】彩票-去除图标的玻璃质感效果
- 【深入浅出IOS开发】彩票-去除图标的玻璃质感效果
- Android中解析JSON总结
- C++实现不可被复制的类
- 46、JavaScript的运动----完美运动框架的实现----注意运动停止的判断的技巧
- vim程序编辑器
- win32版QQ隐藏功能,气泡消息显示详细时间
- Android刮彩票效果
- 10+资深软件架构师谈计算机专业——填高考志愿必读
- Android开发-layout布局相关属性总结
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- LeetCode第54题之Spiral Matrix
- iOS适配那些事
- ARC基本原理
- 初学MVP
- Java下载文件,文件名中文乱码问题