模拟彩票刮奖

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;// 事件结束被消费掉了
            }
        });
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值