电商_自定义涂鸦

布局

<?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=".activity.TuYaActivity">

    <com.example.myapplication.view.TuYaSelfView
        android:id="@+id/tuya_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"

        >

        <ImageView
            android:id="@+id/image_red"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:background="@drawable/color_red" />

        <TextView
            android:id="@+id/clear"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:text="橡皮"
            android:gravity="center"
            android:textColor="#ffffff"
            android:background="@drawable/color_clear" />

    </LinearLayout>

</RelativeLayout>

Activity

package com.example.myapplication.activity;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import com.example.myapplication.R;
import com.example.myapplication.view.TuYaSelfView;

public class TuYaActivity extends AppCompatActivity implements View.OnClickListener {

    private TuYaSelfView mTuYaSelfView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tu_ya);
        mTuYaSelfView=findViewById(R.id.tuya_view);

        findViewById(R.id.image_red).setOnClickListener(this);
        findViewById(R.id.clear).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.image_red:
                mTuYaSelfView.setColor(Color.RED,0);
                break;
            case R.id.clear:
                mTuYaSelfView.setColor(Color.WHITE,1);
                break;
        }
    }
}

自定义View

package com.example.myapplication.view;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;


public class TuYaSelfView extends View {
    private Bitmap bitMap;
    private Canvas canvas;
    private Path mPath;
    private Paint mPaint;

    public TuYaSelfView(Context context) {
        super(context);
        init(context);
    }


    public TuYaSelfView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }


    //初始化  画笔  路径
    private void init(Context context) {
        mPath = new Path();//创建路径

        mPaint = new Paint();
        mPaint.setColor(Color.BLACK);//设置颜色
        mPaint.setStrokeWidth(5);
        mPaint.setAntiAlias(true);//设置抗锯齿
        mPaint.setStyle(Paint.Style.STROKE);//设置空心


    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        //设置画布
        bitMap = Bitmap.createBitmap(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec), Bitmap.Config.ARGB_8888);
        canvas = new Canvas(bitMap);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawColor(Color.WHITE);//设置画布颜色
        canvas.drawBitmap(bitMap, 0, 0, null);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN://手指按下
                mPath.moveTo(event.getX(), event.getY());//起始位置
                break;
            case MotionEvent.ACTION_MOVE://手指移动
                mPath.lineTo(event.getX(), event.getY());
                break;
        }

        canvas.drawPath(mPath, mPaint);
        invalidate();//刷新  是在主线程里刷新
        //postInvalidate();//刷新  可以子线程里刷新

        return true;
    }

    //设置画笔颜色
    public void setColor(int color, int type) {
        if(type==1){
            mPaint.setStrokeWidth(20);
        }else{
            mPaint.setStrokeWidth(5);
        }
        mPath.reset();//重新设置
        mPaint.setColor(color);

    }
}

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43797842/article/details/88708310