2016-10-24 9 views
1

私はウェブページ上に画像を配置するカスタムImageViewを持っています。電話画面に表示される画像は、Webページ上の画像を表す必要があります。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の左上にあるようにスケーリングされ、整列されたときに、これは動作しますが、あなたができます画像の右下を拡大しないでください。また、マップポイントメソッドが画像の幅と高さ(マイナス値)を返すことをmaxにズームすると気付きました。

答えて

0

私のロジックはちょっとだった私は以下のようにポジション計算を変更しました。

holder.getRect()[0] = (arr[0]/scale) * phoneDisplayScale; 
holder.getRect()[1] = (arr[1]/scale) * phoneDisplayScale; 
関連する問題