首先我很抱歉我的英語。從ImageView中單擊獲取圖像上x和y點的相應位置?
我正在做一個android項目,獲取ImageView中包含的圖像的一個點擊,並在圖像中根據點擊接收到的cordenadas x,y繪製一個圓。
我的問題是如何推廣到所有屏幕尺寸? 圖像轉到ImageView的將與CameraView拍攝的照片, 一個Mat()
與行和列取決於屏幕的大小。 我可以在gentmotion模擬器(720x1290三星Galaxy S3,320dpi)中做到這一點,圖像320x240。但是,當在Galaxy Y(屏幕尺寸320x240)上測試無效時。 下面的代碼:
... onCreate
im = (ImageView) findViewById(R.id.imageView1);
final DisplayMetrics dm = getResources().getDisplayMetrics();
params = (LayoutParams) im.getLayoutParams();
params.width = 640;
params.height = 480;
im.setLayoutParams(params);
Mat m = new Mat();
im.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
real_x = (float) (event.getX() * (160f/dm.densityDpi));
real_y = (float) (event.getY() * (160f/dm.densityDpi));
updateMat(real_x,real_y);
}
public void loadMat(){
//ma = new Mat();
InputStream inpT = getResources().openRawResource(R.drawable.image);
try {
m = MainActivity.readInputStreamIntoMat(inpT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap bm = Bitmap.createBitmap(m.cols(), m.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(m, bm);
Log.i("BTM", String.valueOf(bm.getHeight() + " " + bm.getWidth()));
im.setImageBitmap(bm);
}
public void updateMat(float real_x2, float real_y2){
Point b = new Point(real_x2,real_y2);
//if is firstClick -> Load the ImageView image on a Mat
if (first_click) {
loadMat();
first_click= false;
}
Core.circle(m, b, 10, new Scalar(0, 255, 0), 2);
Bitmap bm = Bitmap.createBitmap(m.cols(), m.rows(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(m, bm);
Log.i("BTM", String.valueOf(bm.getHeight() + " " + bm.getWidth()));
im.setImageBitmap(bm);
}
可能的[Android的重複:如何獲取圖像/ ImageView中的xy座標?](http://stackoverflow.com/questions/8909835/android-how-do-i-get-the-xy-座標 - 圖像 - 圖像視圖) – 2015-08-16 00:23:32