Android Studio:小Demo-“涂鸦”

一、在手机模拟器上显示一个图片

1、MainActivity.java里的代码

public class MainActivity extends AppCompatActivity {
@SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //配置界面
       setContentView(R.layout.activity_main);
 }
}

2、activity_main.xml内代码


activity_main.xml

3、通过在MainActivity.java和activity_main.xml内简单设置就可以显示一个图片了呢


结果.PNG
二、设置背景颜色

1、MainActivity.java内代码

public class MainActivity extends AppCompatActivity {
@SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //配置界面
       setContentView(R.layout.activity_main);
 //设置当前这个界面的内容视图为这个容器
            //通过代码来布局界面
            //1、找一个容器
            FrameLayout container = new FrameLayout(this);
            //2、设置当前这个界面的内容视图为这个容器
            setContentView(container);
            //3、创建一个子视图(子控件)(1)创建ImagineView显示图片 (2)设置属性
            ImageView backgroundImageView = new ImageView(this);
            backgroundImageView.setBackgroundColor(Color.GREEN);
            //添加到容器里面
            container.addView(backgroundImageView, 200, 200);   //可改动数据,设置背景大小
  }
}

2、手机模拟器上:
设置前


前.PNG

设置后


后.PNG
三、“涂鸦”

1、思路:使用透明色去替换原有图片的对应点的像素,获取替换之后的图片 将图片显示在模拟器上

2、MainActivity.java内代码

public class MainActivity extends AppCompatActivity {
    ImageView forground;
    Bitmap orgBitmap;
    Bitmap copyBitmap;
    Canvas canvas;
    Paint paint;
    Matrix matrix;
    //创建一个界面 界面如何布局
    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);           //配置界面
        forground=findViewById(R.id.iv_forground);       //找到容器里面的图片视图控件 findViewById 
        //将需要操作的图片读取出来 Bitmap
        orgBitmap= BitmapFactory.decodeResource(getResources(),R.drawable.a2);    //BitmapFactory: 用于管理位,decodeResource: 从工程的资源路径中去生成一张位图,getResources() :获取工程的资源,R.drawable.a1:访问资源路径下 drawable里面一个文件
        //创建一个和原始图片相同环境的空位图
        copyBitmap=Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),orgBitmap.getConfig());       //操作这张图片  用透明色去替换某个位置的颜色
        //创建一个 Canvas 画布=现实中的画板
         canvas=new Canvas(copyBitmap);
        //创建一个画笔
         paint=new Paint();
        //先创建一个矩阵
         matrix=new Matrix();
        //画一幅图
        canvas.drawBitmap(orgBitmap,matrix,paint);
        //显示图片
        forground.setImageBitmap(copyBitmap);
      //给前景图片添加touch事件
        forground.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent Event) {
                //获取当前事件
                int action= Event.getAction();
                //判断状态
                if (action==MotionEvent.ACTION_MOVE){
                    //获取触摸点的坐标
                    int x=(int)Event.getX();
                    int y=(int)Event.getY();
                    System.out.println(canvas);
                    //替换x,y对应的像素
                    //将当前触摸点周围的像素都该成透明的
                    for(  int i=-500;i<500;i++) {
                        for( int j=-500;j<500;j++) {
                            copyBitmap.setPixel(x+i, y+j, Color.TRANSPARENT);
                        }
                        //canvas.drawBitmap(orgBitmap, new Matrix(), paint);
                    }
                    forground.setImageBitmap(copyBitmap);
                }
                return true;
            }
        });
    }
}

3、手机模拟器上
可“涂鸦”揭秘底层图片


GIF.gif
四、心得

今天东哥的讲课速度非常棒

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容