电商_自定义涂鸦
布局
<?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);
}
}