私は単一のImageViewを保持するViewFlipperを持っています。私は、画像/ビューを変更するためにスワイプし、画像をクリックしてサウンドを再生できるようにしたい。OnClick ViewFlipperを使用したOnClick ImageView
私はビューを変更するOnFlingを処理しているGestureDetectorを持っています。私はonClickListenerをimageviewに配置しようとしましたが、うまく動作しましたが、OnFlingの作業は中止されました。
最後に、私のGestureDetectorにonSingleTapConfirmedを追加しました。これはうまくいきましたが、ImageViewだけでなく、アクティビティのどこにでもクリックを登録します。
誰もが、画像ビューで作業するためにonSingleTapConfirmedを絞り込む方法を提案できますか?
ここに私のコードは、これまでのところです:
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Log.v("Swipe", "Right to Left");
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.addView(nextImage(true));
viewFlipper.showNext();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Log.v("Swipe", "Left to Right");
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.addView(nextImage(false));
viewFlipper.showNext();
}
} catch (Exception e) {
// nothing
}
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e)
{
// TODO Auto-generated method stub
Log.v("SingleTap", "OnSingleTapConfirmed Run");
return super.onSingleTapConfirmed(e);
}
}
private View nextImage(boolean righttoleft) {
ImageView imgv1 = new ImageView(this);
if(righttoleft == true)
{
Uri image = Uri.parse("android.resource://com.owentech.brainybaby/drawable/" + variables.letters[variables.currentpos]);
imgv1.setImageURI(image);
imgv1.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
return imgv1;
}
ありがとうございました。 – Tony
ACTION_DOWNとACTION_UPの間の距離を測定してクリックとフリンジを区別するように管理しました。もう一度お手伝いをしてください。 – Tony
あなたは大歓迎です:) – Chickenrice