2016-04-25 55 views
3

可點擊區域我想用這個數據Android的 - 創建的ImageView

"X1": "213", 
"Y1": "174", 
"X2": "339", 
"Y2": "269", 

而且我想喜歡去一些活動的行動與此可點擊區域關聯到創建的ImageView可點擊區域時,自來水就可以了。 我不想使用此鏈接中給出的解決方案。 clickable area of image

因爲我有多個Imageviews和座標可以是不同的每一次。這些縱座標來自服務器。

請提出處理此問題的最佳方法。

+0

您可以使用提供的座標創建RectF對象,並使用onTouchListner對imageview進行比較,並將您的rectf與點擊區域進行比較。 – USKMobility

+0

您可以嘗試爲整個佈局使用Rectangles('Rect()'),'onTouchListener()',並檢查事件座標是否在矩形內。還有一個名爲['AbsoluteLayout']的佈局(http://developer.android.com/reference/android/widget/AbsoluteLayout.html),您可以在其中指定確切的位置,我不建議這樣做,如果使用它,則支持不同的屏幕尺寸。 – yennsarah

+0

矩形(Rect())是否也會根據屏幕大小縮放給定的座標?因爲我的imageview在寬度上是match_parent,在高度上是wrap_content? –

回答

5

,您可以觀看觸摸位置:

ImageView iv = (ImageView) findViewById(R.id.image); 
iv.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    log.d(TAG,"Location: " + event.getX() + " , " + event.getY()); 
    } 
}); 

更新1: 你可以有你的觀點的左上角位置如下:

int[] viewCoords = new int[2]; 
imageView.getLocationOnScreen(viewCoords); 

從那裏,你可以看到你的圖像視圖的確切位置,觸摸到:

int X = (int) event.getX(); 
int Y = (int) event.getY(); 

int imageX = X - viewCoords[0]; 
int imageY = Y - viewCoords[1]; 
+0

爲此,我想首先我需要縮放我的圖像以獲得新的屏幕尺寸,然後縮放我的座標以獲得新的屏幕寬度,然後才能使用此監聽器。我是正確的先生? –

+0

讓我試試這個解決方案,然後我會回覆你。 –

+0

感謝哥們。我已將imageX和ImageY從PX轉換爲Dp,現在我認爲我幾乎接近我的解決方案。再次非常感謝。 –