イメージビューをクリック可能にしようとしています。実際にはクリック可能であるため、ユーザーがイメージビューに触れた後にインテントを呼び出すことができます。しかし、タッチで画像を変更するのに苦労しています。
私は次のものが欲しい:
- デフォルト (タッチなし) : Image1
- ユーザーがイメージビューにタッチ: image2 に変更
- ユーザーが指で画像ビューの外に移動: Image1 に戻ります (Intent を呼び出さずに)
- ユーザーが imageview に触れない: Intent を呼び出し、Image1 に戻る
これらのいくつかは、次のコードで機能しています。
final ImageView v = (ImageView) findViewById(R.id.profileImage);
v.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
switch (arg1.getAction()) {
case MotionEvent.ACTION_DOWN: {
v.setImageResource(R.drawable.ic_contact_picture_down);
break;
}
case MotionEvent.ACTION_CANCEL:{
v.setImageResource(R.drawable.ic_contact_picture);
break;
}
case MotionEvent.ACTION_UP: {
takePhoto();
v.setImageResource(R.drawable.ic_contact_picture);
break;
}
}
return true;
}
});
画像はタッチすると正しく image2 に変わります。したがって、 ACTION_DOWN が機能しています。ACTION_UP は、ユーザーがイメージビューに触れていない場合に呼び出されます。ただし、アンタッチがイメージビューの外で行われた場合にも呼び出されます。これが発生した場合は、image1 に戻りたいのですが、takePhoto() 関数を呼び出さないでください。ACTION_CANCEL が呼び出されることはありません。これは、上記のケースの候補と考えられます。