package com.pdj.bw.demohuaban;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private ImageView img;
private Bitmap bmCopy;
private Canvas mCanvas;
private Bitmap bmsrc;
private Paint paint;
private Button blue;
private Button red;
private Button ca;
private Button cun;
private int index = 1;
private Button jia;
private Button jian;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//加载原图
bmsrc = Bitmap.createBitmap(600, 800, Bitmap.Config.ARGB_8888);
//bmsrc = BitmapFactory.decodeResource(getResources(),R.mipmap.bg);
//Resources res = getResources();
//bmsrc = BitmapFactory.decodeResource(res, R.drawable.bg).copy(Bitmap.Config.ARGB_8888, true);
//创建白纸有宽高
bmCopy = Bitmap.createBitmap(bmsrc.getWidth(), bmsrc.getHeight(), bmsrc.getConfig());
//创建纸板,参数是白纸对象
mCanvas = new Canvas(bmsrc);
//创建画笔
paint = new Paint();
//在纸上作画
mCanvas.drawBitmap(bmsrc, new Matrix(), paint);
img.setImageBitmap(bmsrc);
setOnTouchListener(index);
setOnClickListener();
}
private void setOnClickListener() {
//蓝色按钮监听
blue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
paint.setColor(Color.BLUE);
paint.setXfermode(null);
setOnTouchListener(index);
}
});
//红色按钮监听
red.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
paint.setColor(Color.RED);
paint.setXfermode(null);
setOnTouchListener(index);
}
});
//橡皮擦按钮监听
ca.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
paint.setColor(Color.TRANSPARENT);
setOnTouchListener(50);
}
});
jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
index++;
setOnTouchListener(index);
}
});
jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
index--;
if(index<=1){
index=1;
}
setOnTouchListener(index);
}
});
cun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
@SuppressLint("ClickableViewAccessibility")
private void setOnTouchListener(int s) {
paint.setStrokeWidth(s);
img.setOnTouchListener(new View.OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
//得到按下时X,Y坐标
startX = (int) motionEvent.getX();
startY = (int) motionEvent.getY();
break;
case MotionEvent.ACTION_MOVE:
//得到抬起时X,Y坐标
int stopX = (int) motionEvent.getX();
int stopY = (int) motionEvent.getY();
//在开始和结束时按坐标划线
mCanvas.drawLine(startX,startY,stopX,stopY,paint);
//mCanvas.drawCircle(startX,stopY,10,paint);
//正方形(长方形)
//mCanvas.drawRect(startX,startY,stopX,stopY,paint);
//实时更新坐标
startX = stopX;
startY = stopY;
img.setImageBitmap(bmsrc);
break;
}
return true;
}
});
}
private void initView() {
img = (ImageView) findViewById(R.id.img);
blue = (Button) findViewById(R.id.blue);
red = (Button) findViewById(R.id.red);
ca = (Button) findViewById(R.id.ca);
cun = (Button) findViewById(R.id.cun);
jia = (Button) findViewById(R.id.jia);
jian = (Button) findViewById(R.id.jian);
}
}
Android自定义画板
最新推荐文章于 2021-05-27 21:46:04 发布