簡體   English   中英

在OnTouchListener的畫布上繪圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM