栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

移动手指时看不到路径

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

移动手指时看不到路径

public class DoodleImageView extends View {    // drawing path    private Path drawPath;    // drawing point    private boolean drawPoint;    // drawing and canvas paint    public Paint drawPaint;    public Paint tempPaint;    private Paint canvasPaint;    // initial color    private int paintColor;    // canvas    private Canvas drawCanvas;    // canvas bitmap    private Bitmap canvasBitmap;    private ArrayList<Path> paths = new ArrayList<Path>();    private ArrayList<Integer> pathscolor = new ArrayList<Integer>();    private ArrayList<Integer> pointcolor = new ArrayList<Integer>();    private ArrayList<Integer> marker = new ArrayList<Integer>();    private ArrayList<Point> points = new ArrayList<Point>();    private float mX, mY;    private final float TOUCH_TOLERANCE = 1;    public DoodleImageView(Context context, AttributeSet attrs) {        super(context, attrs);        setupDrawing();        // TODO Auto-generated constructor stub    }    private void setupDrawing() {        // get drawing area setup for interaction        drawPath = new Path();        drawPaint = new Paint();        // drawPaint.setColor(paintColor);        drawPaint.setAntiAlias(true);        drawPaint.setStrokeWidth(20);        drawPaint.setStyle(Paint.Style.STROKE);        drawPaint.setStrokeJoin(Paint.Join.ROUND);        drawPaint.setStrokeCap(Paint.Cap.ROUND);        canvasPaint = new Paint(Paint.DITHER_FLAG);    }    private Paint setUpPaint(int color) {        tempPaint = new Paint();        tempPaint.setColor(color);        tempPaint.setAntiAlias(true);        tempPaint.setStrokeWidth(20);        tempPaint.setStyle(Paint.Style.STROKE);        tempPaint.setStrokeJoin(Paint.Join.ROUND);        tempPaint.setStrokeCap(Paint.Cap.ROUND);        return tempPaint;    }    @Override    protected void onSizeChanged(int w, int h, int oldw, int oldh) {        // TODO Auto-generated method stub        super.onSizeChanged(w, h, oldw, oldh);        canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);        drawCanvas = new Canvas(canvasBitmap);    }    @Override    protected void onDraw(Canvas canvas) {        // TODO Auto-generated method stub        if (marker.size() > 0) { for (int i = 0; i < paths.size(); i++) {     canvas.drawPath(paths.get(i), setUpPaint(pathscolor.get(i))); } for (int i = 0; i < points.size(); i++) {     canvas.drawPoint(points.get(i).x, points.get(i).y,  setUpPaint(pointcolor.get(i))); }        }     canvas.drawPath(drawPath,drawPaint);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        // TODO Auto-generated method stub        float touchX = event.getX();        float touchY = event.getY();        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN: touch_start(touchX, touchY); invalidate(); break;        case MotionEvent.ACTION_MOVE: touch_move(touchX, touchY); invalidate(); break;        case MotionEvent.ACTION_UP: touch_up(); invalidate(); break;        default: return false;        }        invalidate();        return true;    }    private void touch_start(float x, float y) {        drawPoint = true;        drawPath.reset();        drawPath.moveTo(x, y);        drawCanvas.drawPath(drawPath, drawPaint);        mX = x;        mY = y;    }    private void touch_move(float x, float y) {    float dx = Math.abs(x - mX);    float dy = Math.abs(y - mY);    if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {        drawPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);        drawPoint = false;        drawCanvas.drawPath(drawPath,drawPaint);        mX = x;        mY = y;    }}    private void touch_up() {        if (drawPoint == true) { drawCanvas.drawPoint(mX, mY, drawPaint); Point p = new Point(); p.set((int) mX, (int) mY); points.add(p); pointcolor.add(drawPaint.getColor()); marker.add(0);        } else { drawPath.lineTo(mX, mY); drawCanvas.drawPath(drawPath, drawPaint); paths.add(drawPath); drawPath = new Path(); drawPath.reset(); pathscolor.add(drawPaint.getColor()); marker.add(1);        }    }    public void clear() {        if (marker.size() > 0) { paths.clear(); points.clear(); pathscolor.clear(); pointcolor.clear(); invalidate();        }    }    public void undo() {        if (marker.size() > 0) { if (marker.get(marker.size() - 1) == 1) {     if (paths.size() > 0) {         paths.remove(paths.size() - 1);         pathscolor.remove(pathscolor.size() - 1);         marker.remove(marker.size() - 1);         invalidate();     } } else {     if (points.size() > 0) {         points.remove(points.size() - 1);         pointcolor.remove(pointcolor.size() - 1);         marker.remove(marker.size() - 1);         invalidate();     } }        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号