2016-10-24 186 views
1

我有一個自定義的ImageView重新定位網頁上的圖像。在手機屏幕上看到的圖像應該代表網頁上的圖像。Android獲取圖像的座標

我正在使用Matrix.mapPoints(float[] dst, float[] src)來嘗試獲取圖像在縮放到正確構圖時的偏移量。我還考慮了圖像的縮放程度,以及手機上的圖像視圖與網頁上圖像標籤寬度的大小。

UpdateImage()在圖像視圖類

public void updateImage() { 
     final float phoneDisplayScale = (float) getWidth()/(float) getDrawable().getIntrinsicWidth(); 

     float[] m = new float[9]; 
     matrix.getValues(m); 

     float scale = m[Matrix.MSCALE_X]; 
     float[] arr = {0, 0}; 
     matrix.mapPoints(arr, arr); 

     //holder.rect = {image_x, image_y, imageWidth, imageHeight} 

     if (holder != null) { 
     holder.getRect()[0] = arr[0]/phoneDisplayScale; 
     holder.getRect()[1] = arr[1]/phoneDisplayScale; 
     holder.getRect()[2] = scale * (getImageWidth()/phoneDisplayScale); 
     holder.getRect()[3] = scale * (getImageHeight()/phoneDisplayScale); 

     Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect())); 
     Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect())); 
     Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect())); 
     } 
     // 
     // 
     // Socket io code 
     // 
     // 

} 

這作品時,對圖像進行縮放和對齊,使圖像的左上角是在ImageView的左上角,但你可以切勿放大圖像的右下角。我還注意到,如果我放大地圖點方法的最大值,將返回圖像的寬度和高度(負值)。

回答

0

好吧,我的邏輯是有點關閉我已經改變了位置計算到以下,它現在的作品。

holder.getRect()[0] = (arr[0]/scale) * phoneDisplayScale; 
holder.getRect()[1] = (arr[1]/scale) * phoneDisplayScale;