android(40)(撕衣服,bitmap的使用)

本文介绍了一种基于Android平台的触摸互动撕衣效果实现方案。通过监听用户的触摸事件,并在对应位置设置像素为透明,逐步展示底层图像,从而达到撕衣的视觉效果。文章详细展示了如何使用Bitmap、Canvas等API进行图像操作。
摘要由CSDN通过智能技术生成
1.撕衣服:
public class MainActivity extends Activity {
    private ImageView iv;
    // 可以修改的位图
    private Bitmap alertBitmap;
    private Canvas canvas;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv = (ImageView) findViewById(R.id.iv);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.pre);
        // 创建一个空白的原图的拷贝
        alertBitmap = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), bitmap.getConfig());
        canvas = new Canvas(alertBitmap);
        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        canvas.drawBitmap(bitmap, new Matrix(), paint);
        iv.setImageBitmap(alertBitmap);
        iv.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:// 手指按下屏幕
                    System.out.println("action down");
                    break;
                case MotionEvent.ACTION_MOVE:// 手指在屏幕上移动
                    int x = (int) event.getX();
                    int y = (int) event.getY();
                    System.out.println("设置("+x+","+y+")透明颜色");
                    for(int i=-4;i<5;i++){
                        for(int j=-4;j<5;j++){
                            try{
                            alertBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);//transparent:透明的
                            }catch (Exception e) {
                                // TODO: handle exception
                            }
                        }
                    }
                    iv.setImageBitmap(alertBitmap);
                    break;
                case MotionEvent.ACTION_UP:// 手指离开屏幕
                    MediaPlayer.create(getApplicationContext(), R.raw.higirl).start();
                    break;
                }
                return true;//可以重复循环的处理事件
            }
        });
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值