2013-07-26 28 views
0

您好,我正在嘗試將imageview放置在用戶觸摸的區域。android:根據用戶觸摸的位置顯示地點圖像(api 11+)

使用MotionEvent event 簡單地做imageview.setX(event.getX())imageview.setY(event.getY())不完整的解決方案。

我知道這些都是像素值,所以我嘗試使用(int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, event.getX() , getResources() .getDisplayMetrics());

轉換事件以密度獨立的值,但是這仍然沒有給我的座標那場比賽,我摸,當我試圖展示的ImageView在這個位置。

此外,我懷疑imageview在這些座標繪製左上角,當我想要的座標是在imageview的中心。

洞察讚賞

回答

1

,您很可能希望做類似如下:

如果你正在努力尋找一個縮放圖像的觸摸事件分點:

public static float[] getPointerCoords(ImageView view, MotionEvent e) 
{ 
    final int index = e.getActionIndex(); 
    final float[] coords = new float[] { e.getX(index), e.getY(index) }; 
    Matrix matrix = new Matrix(); 
    view.getImageMatrix().invert(matrix); 
    matrix.postTranslate(view.getScrollX(), view.getScrollY()); 
    matrix.mapPoints(coords); 
    return coords; 
} 

public boolean onTouch(View v, MotionEvent event) 
{ 
    float[]  returnedXY = getPointerCoords((ImageView) v, event); 
    imageView.setLeft(returnedXY[0] + (imageView.getWidth() /2)); 
    imageView.setTop(returnedXY[1] + (imageView.getHeight() /2)); 
} 

如果沒有,只需使用events.getX和getY。您可能需要使用該事件的getRawX和getRawY。

+0

不起作用,是因爲我在添加了這些座標之後以編程方式添加了我的imageview和佈局參數? – CQM

+0

setLeft和setTop不起作用,setX和setY在這種情況下做。但是現在我需要座標左邊和上邊的哈,好的工作,還有其他的見解嗎? – CQM

+0

事件中的座標不能給你一個準確的位置嗎? –

相關問題