博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
赵雅智_Android案例_刮刮乐
阅读量:6257 次
发布时间:2019-06-22

本文共 2287 字,大约阅读时间需要 7 分钟。

实现效果

主要代码

注意:图片位置不要设置,表面图片要大于底层图片

MainActivity.java

package com.example.guaguale;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;/** * 刮刮乐 *  * @author zhaoyazhi *  *         2014-6-18 */public class MainActivity extends Activity implements OnTouchListener {	private Canvas canvas;	private Paint paint;	private Bitmap bitmap;	private ImageView imgInfo;	private ImageView imgSurface;	private Bitmap bSurface;// 没有刮开的表面图片	private Bitmap bInfo;// 刮开后的显示内容	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		imgSurface = (ImageView) findViewById(R.id.img_surface);		imgInfo = (ImageView) findViewById(R.id.img_info);		// 获得图片		// 參数1:res是资源的引用,參数2:id是图片的id		bSurface = BitmapFactory.decodeResource(getResources(), R.drawable.a);		bInfo = BitmapFactory.decodeResource(getResources(), R.drawable.b);		// 设置图片		imgSurface.setImageBitmap(bSurface);		imgInfo.setImageBitmap(bInfo);		// 创建能够改动的空白的bitmap		bitmap = Bitmap.createBitmap(bSurface.getWidth(), bSurface.getHeight(),				bSurface.getConfig());		// 设置屏幕触摸事件		imgSurface.setOnTouchListener(this);		// 创建画笔		paint = new Paint();		// 创建画布		canvas = new Canvas(bitmap);		canvas.drawBitmap(bSurface, new Matrix(), paint);	}	/**	 * 用户触摸屏幕时候的事件	 */	@Override	public boolean onTouch(View view, MotionEvent event) {		switch (event.getAction()) {		case MotionEvent.ACTION_MOVE:			int newX = (int) event.getX();			int newY = (int) event.getY();			// i ,j每个透明单位的大小			for (int i = -10; i < 10; i++) {				for (int j = -10; j < 10; j++) {					//图片之外的区域					if ((i + newX) >= bSurface.getWidth()							|| j + newY >= bSurface.getHeight() || i + newX < 0							|| j + newY < 0) {						return false;					}					//将滑过的地方变为透明					bitmap.setPixel(i + newX, j + newY, Color.TRANSPARENT);				}			}			//设置透明区域			imgSurface.setImageBitmap(bitmap);			break;		}		return true;	}}

涉及知识点

paint画笔

canvas画布

bitmap

你可能感兴趣的文章
sqlyog快捷键
查看>>
一花一世界 一叶一菩提
查看>>
jenkins token-macro 导致docker API连接 Test失败
查看>>
UIKit框架介绍
查看>>
Ubuntu锐捷上网问题
查看>>
storm(2)-基于k8s的安装
查看>>
数据库读写分离
查看>>
谈谈KMP算法
查看>>
知道这20个正则表达式,能让你少写1,000行代码
查看>>
我的友情链接
查看>>
javaScript基础(四)流程控制
查看>>
为安装有系统及应用程序的服务器更换硬盘方法一例
查看>>
MySQL笔记:select默认使用不当索引导致的巨大性能损失
查看>>
我的友情链接
查看>>
服务器发生间歇性问题时的定位思路
查看>>
我的友情链接
查看>>
1. 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数?
查看>>
我的友情链接
查看>>
Android优秀开源项目
查看>>
CentOS部署OpenLDAP认证之 phpldapadmin
查看>>