Android – 触摸绘图

我正在通过Google查看
this sample drawing app,当我在模拟器中运行应用程序并尝试使用鼠标绘制时,绘图看起来并不顺畅.圆圈出现时它们之间有间隙.只有当我慢慢地拖动鼠标时,我才会得到一条完整的线条.我还没有一个实际的设备来测试它,所以我想知道它是如何在实际设备上,或者这是一个模拟器行为?

如果这也是它在设备上的显示方式,我该怎么做才能使触摸平滑?

更新:

执行绘图的实际代码是:

private void drawPoint(float x, float y, float pressure, float width) {
    if (width < 1) width = 6; 
    if (mBitmap != null) {
        float radius = width / 2;
        int pressureLevel = (int)(pressure * 255);
        mPaint.setARGB(pressureLevel, 255, 255, 255);
        mCanvas.drawCircle(x, y, radius, mPaint);
        mRect.set((int) (x - radius - 2), (int) (y - radius - 2),
                (int) (x + radius + 2), (int) (y + radius + 2));
        invalidate(mRect);
    }
}

@Override public boolean onTouchEvent(MotionEvent event) {         
    int N = event.getHistorySize();
    int P = event.getPointerCount();

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < P; j++) {
            mCurX = event.getHistoricalX(j, i);
            mCurY = event.getHistoricalY(j, i);
            drawPoint(mCurX, mCurY,
                    event.getHistoricalPressure(j, i),
                    event.getHistoricalTouchMajor(j, i));
        }
    }
    for (int j = 0; j < P; j++) {
        mCurX = event.getX(j);
        mCurY = event.getY(j);
        drawPoint(mCurX, mCurY, event.getPressure(j), event.getTouchMajor(j));
    }           
}

任何改善它的帮助将不胜感激.

最佳答案 它将是锯齿状的,但我相信代码是绘制点,所以如果你只绘制一条线,从最后一端绘制到新点开始,它将是连续的.

是的,它在实际设备上看起来会一样.

另一个选项,我在内存中做的是,有一些压力值在0到255之间,或0和1,始终将其设置为最高值.这实际上可能是解决您问题的简单方法.

如果您显示实际执行绘图的代码,那将会有所帮助,顺便说一句.

更新:

正如我提到的那样改变这一行:

int pressureLevel = (int)(pressure * 255);

int pressureLevel = (int)(255);

应该解决你的问题.

如果没有,那么您可能只想使用drawLir,而不是使用drawCircle,那么您将跟踪刚刚绘制的最后一个圆圈.

点赞