• 撕衣服小案例


    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //[1]找到iv 显示我们操作的图片 
            final ImageView iv = (ImageView) findViewById(R.id.iv);
            
            //[2]把我们要操作的图片转换成bitmap
            Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pre19);
            
            //[3]创建原图的副本  
            
            //[3.1]创建模板
            final Bitmap alterbBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());
            //[3.2]以alterbBitmap bitmap为模板创建一个画布 
            Canvas canvas = new Canvas(alterbBitmap);
            //[3.3]创建一个画笔 
            Paint paint = new Paint();
            //[3.4]开始作画 
            canvas.drawBitmap(srcBitmap, new Matrix(), paint);
            
            //[4]把alterbitmap显示到iv上 
            iv.setImageBitmap(alterbBitmap);
            
            //[5]给iv设置一个触摸事件 
            iv.setOnTouchListener(new OnTouchListener() {
                
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    //[6]获取触摸事件的类型 
                    int action = event.getAction();
                    switch (action) {
                        
                    case MotionEvent.ACTION_MOVE: //移动  
                        
                        for (int i = -7; i < 7; i++) {  //改变x 
                            
                            for (int j = -7; j <7; j++) {
                                //为了 良好的用户体验 撕一个圆 
                                if (Math.sqrt(i*i+j*j)<7) {
                                    //一次修改一个像素 
                                    try {
                                        alterbBitmap.setPixel((int)event.getX()+i, (int)event.getY()+j, Color.TRANSPARENT);
                                    } catch (Exception e) {
                                    }
                                }
                                
                                
                            }
                            
                        }
                    
                        
                        //一定要记得更新iv
                        iv.setImageBitmap(alterbBitmap);
                        break;
    
                    }
                    
                    return true;
                }
            });
            
            
            
        }
    
    }
  • 相关阅读:
    阿里云ECS磁盘性能测试
    阿里云NAS性能测试
    Jumpserver堡垒机容器化部署
    k8s集群中部署RookCeph高可用集群
    使用GitHub Action进行打包并自动推送至OSS
    MYSQL ERROR 1118
    ORACLE cursor_sharing参数导致函数索引失效
    导出微信视频号的视频
    iPad作为扩展屏的几种方案
    AR VR MR XR
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6071476.html
Copyright © 2020-2023  润新知