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.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView iv_pre;
private Bitmap alterBitmap; //将缓存的 图片做成类的成员变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_pre = (ImageView) findViewById(R.id.iv_pre);
// 原图. 位图工厂 解码图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.pre);
//获取缓存图片 原图的宽
alterBitmap = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), bitmap.getConfig());
//创建画板 以....为模版
Canvas canvas = new Canvas(alterBitmap);
//画笔
Paint paint = new Paint();
//参考原图 以1:1的比例画
canvas.drawBitmap(bitmap, new Matrix(), paint);
//设置缓存图片到视图窗口
iv_pre.setImageBitmap(alterBitmap);
iv_pre.setOnTouchListener(new OnTouchListener() {
int x; //jiangx和y定义到外面 全局共享 不用每个都定义了
int y;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//水平方向的坐标
x = (int) event.getX();
//垂直方向的坐标
y = (int) event.getY();
for(int i=-3;i<4;i++){//定义撕开的长度
for(int j=-3;j<4;j++){//定义撕开的宽度
if(Math.sqrt(i*i+j*j)<=3){//定义撕开的是一个圆形
try {//防止鼠标移动到图片外面而产生异常 所以直接 try , catch 来解决
//设置某一个像素点的颜色 x y 的像素点的值 透明色
alterBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
iv_pre.setImageBitmap(alterBitmap);
break;
case MotionEvent.ACTION_MOVE:
x = (int) event.getX();
y = (int) event.getY();
for(int i=-3;i<4;i++){
for(int j=-3;j<4;j++){
if(Math.sqrt(i*i+j*j)<=3){
try {
alterBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
iv_pre.setImageBitmap(alterBitmap);
break;
case MotionEvent.ACTION_UP:
break;
}
return true;// 事件结束被消费掉了
}
});
}
}
模拟彩票刮奖
最新推荐文章于 2021-05-27 18:23:03 发布