安卓-橡皮擦擦线完整实现
安卓-橡皮擦擦線完整實現(xiàn)
小伙伴兒們來看看就好
因為公司的需要,我從網(wǎng)上找了很多demo,但是大多橡皮擦僅僅是將畫筆改成透明,那么如何才能擦線呢。
我也是第一次玩csdn博客,格式啥的不太了解,大家看看代碼就好,其實就是將每次畫的點都存入一個集合。
那么就直接放代碼了
“`
package com.cavasdemo;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class MainActivity extends Activity implements View.OnClickListener {
private ImageView iv; private Button btn_canvas; private Button btn_eraser_line; private Button btn_clear;private Bitmap baseBitmap; private Canvas canvas; private int height; private int width;private List<DrawPath> savePath; private List<DrawPath> deletePath; private DrawPath drawpath;private Path mPath; private float preX, preY;// 之前的XY的位置,用于下面的手勢移動private Paint mBitmapPaint; private Paint mPaint; private RectF rf; private boolean openCanvas = false;@Override protected void onCreate(Bundle savedInstanceState) {requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);setContentView(R.layout.activity_canvas_view);initView();initCanvas();initListener();canvas.drawBitmap(baseBitmap, 0, 0, mBitmapPaint);canvas.drawPath(mPath, mPaint); }private void initView() {iv = (ImageView) findViewById(R.id.iv);btn_canvas = (Button) findViewById(R.id.btn_canvas);btn_eraser_line = (Button) findViewById(R.id.btn_eraser_line);//橡皮擦線btn_clear = (Button) findViewById(R.id.btn_clear);savePath = new ArrayList<>();deletePath = new ArrayList<DrawPath>(); }private void initListener() {btn_canvas.setOnClickListener(this);btn_eraser_line.setOnClickListener(this);btn_clear.setOnClickListener(this); }private void initCanvas() {//創(chuàng)建畫筆mPaint = new Paint();mPaint.setAntiAlias(true);//抗鋸齒mPaint.setDither(true);mPaint.setColor(0xFF00FF00);mPaint.setStyle(Paint.Style.STROKE);// 設置畫筆的填充方式為無填充mPaint.setStrokeJoin(Paint.Join.ROUND);mPaint.setStrokeCap(Paint.Cap.ROUND);mPaint.setStrokeWidth(10);mBitmapPaint = new Paint(Paint.DITHER_FLAG);// 獲取屏幕的高度與寬度width = getResources().getDisplayMetrics().widthPixels;height = getResources().getDisplayMetrics().heightPixels;baseBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 建立圖像緩沖區(qū)用來保存圖像//創(chuàng)建一個畫布canvas = new Canvas(baseBitmap);mPath = new Path();// 顯示舊的畫布
canvas.drawBitmap(baseBitmap, 0, 0, mBitmapPaint);
iv.setImageBitmap(baseBitmap);
}
}
“`現(xiàn)在適合新手了,慢慢研究吧,一次刪掉了很多東西
總結
以上是生活随笔為你收集整理的安卓-橡皮擦擦线完整实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识OFDM(八):OFDM中的PAPR
- 下一篇: 跨考计算机复试自我介绍,跨考生复试自我介