[英]Drawing on a canvas in OnTouchListener
我嘗試使用setOnTouchListener()方法在具有位圖的ImageView上用手指移動畫一條線。
這是代碼。
@Override
public boolean onTouch(View view, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
break;
case MotionEvent.ACTION_MOVE:
upx = event.getX();
upy = event.getY();
canvas.drawLine(downx, downy, upx, upy, paint);
photoView.invalidate();
break;
case MotionEvent.ACTION_UP:
canvas.drawBitmap(notChangedRotatedBitmap, new Matrix(), paint);
photoView.invalidate();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
問題是事件對象返回的坐標看起來像是2乘以,因為如果我開始將手指移到左上角附近,則它幾乎會在手指的下方開始,但是當我將手指移離左上角時,線條開始比我移動快得多(快了將近兩倍),並且很快越過了視圖邊界。 另一方面,如果我開始在右下角附近移動手指,則直到我越過圖像的中心向左上角移動時才顯示。
UPD>此外,我在Imageview上使用以下屬性:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
您所繪制的位圖似乎與ImageView的大小不同。 因此,您可以使用事件坐標scaleType="fitCenter"
圖上繪畫,並且在顯示位圖時,由於scaleType="fitCenter"
屬性,它會縮放為其他大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.