【发布时间】:2016-04-02 03:33:18
【问题描述】:
我的自定义视图中有一个代码,如果我在其中触摸,则会绘制一个圆圈。当我移动圆圈时,请跟随。代码如下
// override onDraw
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (circleBounds != null) {
canvas.drawArc(circleBounds, 360, 360, false, mPaint);
}
}
// when ACTION_DOWN start touch according to the x,y values
private void startTouch(float x, float y) {
mPath.moveTo(x, y);
mX = x;
mY = y;
circleBounds.set(mX - mRadius, mY - mRadius, mX + mRadius, mY + mRadius);
invalidate();
}
//override the onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startTouch(x, y);
break;
case MotionEvent.ACTION_MOVE:
startTouch(x, y);
break;
}
return true;
}
当我缓慢移动时,移动是平稳的。但是当我快速移动时,可以感觉到闪烁。我猜 invalidate() 发生了很多次,导致闪烁。有没有办法让它更平滑(减少绘制圆圈上的闪烁)?
【问题讨论】:
-
你的目标是什么?你可以通过其他方式来实现它。
-
我喜欢当我触摸的时候,无论我走到哪里,圆圈都跟着我的手。它确实实现了我想做的事情。但只是觉得它没有那么光滑(轻微闪烁)。还有什么其他方法可以实现?
-
删除
mPath.moveTo(x, y);,因为你不会在任何地方使用mPath
标签: java android android-canvas android-custom-view ondraw