模拟彩票刮奖

来源:互联网 发布:麦克数据 编辑:程序博客网 时间:2024/04/27 18:24
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;// 事件结束被消费掉了            }        });    }}
0 0
原创粉丝点击