下面的代碼:onTouchListener一個ImageView的需要點擊兩次工作,另一個只有一次
public class MainActivity extends Activity implements OnTouchListener {
RelativeLayout rl;
int i, j = 0;
final int imageArray[] = { R.drawable.w1, R.drawable.w2, R.drawable.w3 };
int image;
final int imageCount = 3;
ImageView back, save, next;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
final int imageArray[] = { R.drawable.w1, R.drawable.w2, R.drawable.w3 };
image = imageArray[0];
rl = (RelativeLayout) findViewById(R.id.rlBackground);
back = (ImageView) findViewById(R.id.bBack);
save = (ImageView) findViewById(R.id.bSave);
next = (ImageView) findViewById(R.id.bNext);
back.setOnTouchListener(this);
save.setOnTouchListener(this);
next.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bBack:
if (j == 0) {
j = imageCount;
}
image = imageArray[j - 1];
rl.setBackgroundResource(image);
j = j - 1;
break;
case R.id.bSave:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bm = BitmapFactory.decodeResource(getResources(), image,
opts);
// savePicture(bm, "image_name.jpg");
SaveImage savefile = new SaveImage();
savefile.SaveImagee(this, bm);
Toast.makeText(getApplicationContext(),
"Image saved on your gallery!", Toast.LENGTH_LONG).show();
break;
case R.id.bNext:
if (j != imageCount) {
rl.setBackgroundResource(imageArray[j]);
image = imageArray[j];
j = j + 1;
} else {
j = 0;
rl.setBackgroundResource(imageArray[j]);
image = imageArray[j];
j = j + 1;
}
break;
}
return false;
}
}
的問題:如果我點擊保存按鈕它適用於第一次點擊。如果我點擊下一個按鈕,我需要點擊兩次才能觸發該功能,但在此之後,如果我繼續點擊下一個按鈕,只需點擊一下即可。但是當我切換到按鈕後,它需要點擊兩次,然後只有一次,如果我切換回到下一個按鈕,同樣的發生 - 兩次,一次..我想這與焦點有關。
如果我改變我的ImageView
到ImageButton
,它觸發功能的兩倍,如果我添加的,如果statemt (event.getAction() == MotionEvent.ACTION_DOWN)
後來我又必須按一下按鈕兩次。我想按鈕與一個工作單擊所有的時間。我不明白爲什麼會這樣,因爲保存按鈕作品只需點擊一下,所有的時間..
編輯:如果我改變
image = imageArray[j];
到
image = imageArray[2];
則按鈕首先點擊工作,但我無法得到它。
你爲什麼不使用onclicklistener? –
「如果我將ImageView更改爲ImageButton,它會觸發該函數兩次,」如果您更改爲onClick()而不是onTouch()',這是真的嗎? – codeMagic
您的bNext的其他塊始終會導致'j'等於'1'。那真的是你想要的嗎? –