2014-10-09 56 views
0

我花了一些時間研究這個問題,仍然沒有找到一個好的答案。如何在Android中拖動ImageView?

我想要的是在屏幕上拖動ImageView。不是拖放,而只是實際拖動。

本教程是有幫助的:

http://code.tutsplus.com/tutorials/android-gesture--mobile-2239

它可以完美的,但它的目的是將一個位圖,而不是一個ImageView的。我嘗試用ImageView替換位圖,但我不確定Canvas和ImageView如何在onDraw方法中進行交互。我試過imageView.draw(canvas);而且這似乎不起作用 - ImageView完全不顯示。

位圖不是想法,因爲您無法像使用ImageView一樣爲它們添加邊框。

我也想能夠從屏幕上扔掉ImageView。

有什麼建議嗎?

在此先感謝。

+0

這並不是那麼複雜。你只需要在ImageView上使用偵聽器。它可以是'ondraglistener'或'ontouchlistener'。 – 2014-10-09 12:53:31

回答

1

您可以創建與您的所有屏幕匹配的RelativeLayout。在佈局中創建ImageView。

OnTouchListener設置爲您的相對佈局以處理您的手指座標。

在此之後,你可以寫這樣的事情:

public boolean onTouch(View v, MotionEvent event) 
    { 
     if (event.getAction() == MotionEvent.ACTION_MOVE) 
     { 
      move(event); 
     } 
    } 


    public void move(MotionEvent event) 
    { 
     RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mImageView.getLayoutParams(); 
     layoutParams.topMargin = event.getY(); 
     layoutParams.leftMargin = event.getX(); 
     mImageView.setLayoutParams(layoutParams); 
    } 

喜歡使用方法move(MotionEvent event)您可以將您的ImageView,你想要的。

我希望這對你有所幫助!

+0

太棒了!我將如何去實施一個投擲? – 2014-10-09 13:04:40

+0

出於某種原因,當我採用這種方法時,如果按住imageview,則會顯示2張圖像並閃爍。不理想。 – 2014-10-09 13:32:14

+0

我不知道你的真實代碼是什麼,在這種情況下無法回答。但是我認爲在'onTouch'中你經常會得到新的座標。您可以嘗試過濾接收到的座標,以檢查您移動手指的時間長短,如果更多5或10像素,則移動您的imageView – 2014-10-09 17:44:45

相關問題