我正在通过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,那么您将跟踪刚刚绘制的最后一个圆圈.