我想動態地添加imageview並將ontouch事件應用到他們。我得到了多張圖片從專輯動態添加到我的佈局。但是當我試圖獲取每個imagview的位置時,它總是顯示最後一個一個我放置而不是各自的圖像視圖位置。Dynamcillay創建imageview和onTouchEvent
這是我試過的代碼,
image = new ImageView(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
image.setScaleType(ImageView.ScaleType.FIT_XY);
Bitmap bit=BitmapFactory.decodeFile(filePath);
image.setImageBitmap(bit);
;
scrool.addView(image);
image.getLayoutParams().height = 400;
image.getLayoutParams().width = 300;
System.out.println("Data Recieved! " + filePath);
int[] values = new int[2];
image.getLocationOnScreen(values);
System.out.println("x location::"+values[0]);
System.out.println(" y location::"+values[1]);
image.setOnTouchListener(this);
}
}
我的觸摸事件,
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("in touch");
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) v.getLayoutParams();
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
break;
case MotionEvent.ACTION_UP:
savedMatrix.set(matrix);
break;
case MotionEvent.ACTION_MOVE:
System.out.println("in move touch");
int[] values = new int[2];
image.getLocationOnScreen(values);
System.out.println("x location ::"+values[0]);
System.out.println(" y location ::"+values[1]);
int x_cord = (int) event.getRawX();
int y_cord = (int) event.getRawY();
if (x_cord > windowwidth) {
x_cord = windowwidth;
}
if (y_cord > windowheight) {
y_cord = windowheight;
}
params.leftMargin = x_cord;
params.topMargin = y_cord;
v.setLayoutParams(params);
break;
}
//notelayout.invalidate();
scrool.invalidate();
return gestureDetector.onTouchEvent(event);
}
烏爾一類級別變量的圖像對象,因此基準變化的每次ü創建一個新的圖像對象,修改圖像的參考,所以,很顯然,將有新的參考即最後一個 – Deb 2014-08-27 12:50:33
感謝您的評論。如何更改參考becoz我是動態addng imageview。 – micky 2014-08-27 12:51:22
而不是使它成爲一個類級別的變量使用'最終ImageView img =新的ImageView(this)'和繼續由@埃爾達Mensutov給出的答案。這應該工作。 – Deb 2014-08-27 12:54:30