zoukankan      html  css  js  c++  java
  • 撕衣服小案例

    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;
                }
            });
            
            
            
        }
    
    }
  • 相关阅读:
    杨辉三角形II(Pascal's Triangle II)
    easyUI DataGrid 分页
    var, object, dynamic的区别以及dynamic的使用
    如何防止程序多次运行
    HTTP报文
    值类型,引用类型,栈,堆,ref,out
    Robotlegs框架1.5简介
    TOGAF架构内容框架之内容元模型(下)
    ZOJ 1204 一个集合能组成多少个等式
    画透明位图
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6071476.html
Copyright © 2011-2022 走看看