画纸上画线

 布局文件  activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

   <ImageView
       android:id="@+id/iv"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentEnd="true"
       android:layout_alignParentRight="true"
       android:layout_marginEnd="66dp"
       android:layout_marginRight="66dp"
       android:src="@drawable/bg"
       />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="红色"
            android:onClick="red"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="绿色"
            android:onClick="green"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="刷子"
            android:onClick="brush"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="保存"
            android:onClick="save"/>

    </LinearLayout>

</RelativeLayout>

 主代码 MainActivity

package com.bwie.mxy181101;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    private Bitmap bmCopy;
    private Canvas mCanvas;
    private ImageView iv;
    //按下坐标
    private int startX;
    private int startY;
    //移动坐标
    private int newX;
    private int newY;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        iv = findViewById(R.id.iv);

        //加载原图
        Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.bg);

        //创建白纸,设置宽高图片参数
        bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig());

        //创建画板
        mCanvas = new Canvas(bmCopy);

        //创建画笔
        final Paint paint = new Paint();

        //在纸上画画,白纸在画板上
        mCanvas.drawBitmap(bmSrc,new Matrix(),paint);

        /*手势识别器和画笔的结合使用*/
        iv.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()){
                    case  MotionEvent.ACTION_DOWN://按下时执行的逻辑
                        startX = (int)event.getX();
                        startY = (int)event.getY();
                        Log.d("mxy","startX:"+startX+"startY:"+startY);

                        break;
                    case  MotionEvent.ACTION_MOVE://移动时执行的逻辑
                        newX =(int)event.getX();
                        newY =(int)event.getY();
                        Log.d("mxy","newX:"+newX+"newY:"+newY);
                        //在背景图中画线
                        mCanvas.drawLine(startX,startY,newX,newY,paint);
                        startX = newX;
                        startY = newY;
                        iv.setImageBitmap(bmCopy);

                        break;
                    case  MotionEvent.ACTION_UP://抬起时执行的逻辑

                        break;


                }
                //咨询实战里面的事件分发机制
                return true;
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/m429679752/article/details/83684050