2012-02-23 17 views
2

私はレイアウトでアクティビティを持っていますが、ImageViewTextViewが含まれています。 ImageViewTextvVewはそれぞれ画像とその人の名前を表示するためのものです。ユーザーの指のジェスチャーに関して、私は右から左に、そして逆に入れ替える必要があります。同じ時間に、名前と画像をそれに応じて変更する必要があります。 これを実装する方法はありますか?私がAndroid開発に慣れているので、誰かが私にこれで書かれたチュートリアルを知らせることができれば素晴らしいだろう。Androidで指のジェスチャーでImageviewとTextViewを交換する方法

ありがとうございます。

私は以下の方法を試しましたが、ジェスチャーは検出されません。

MyGroupActivity.java

import goldenOld.pkg.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.GestureDetector.OnGestureListener; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.MotionEvent; 
import android.widget.Toast; 

public class MyGroupActivity extends Activity implements OnGestureListener{ 

private static final int SWIPE_MIN_DISTANCE = 120; 
private static final int SWIPE_MAX_OFF_PATH = 250; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tab_mygroup); 
} 

public boolean onDown(MotionEvent arg0) { 
    // TODO Auto-generated method stub 
    return false; 
} 

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
    Toast mToast2 = Toast.makeText(getApplicationContext(), "Fling", Toast.LENGTH_SHORT); 
    mToast2.show(); 
    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) { 
      Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show(); 
     } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show(); 
     } 
     else if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      Toast.makeText(getApplicationContext(), "Swipe up", Toast.LENGTH_SHORT).show(); 
     } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      Toast.makeText(getApplicationContext(), "Swipe down", Toast.LENGTH_SHORT).show(); 
     } 
    } catch (Exception e) { 
     // nothing 
     Toast mToast = Toast.makeText(getApplicationContext(), "Exception", Toast.LENGTH_SHORT); 
     mToast.show(); 
    } 

    return true; 

} 

public void onLongPress(MotionEvent arg0) { 
    Toast mToast = Toast.makeText(getApplicationContext(), "Long Press", Toast.LENGTH_SHORT); 
    mToast.show(); 
} 

public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, 
     float arg3) { 
    // TODO Auto-generated method stub 
    return false; 
} 

public void onShowPress(MotionEvent arg0) { 
    // TODO Auto-generated method stub 

} 

public boolean onSingleTapUp(MotionEvent arg0) { 
    Toast mToast = Toast.makeText(getApplicationContext(), "Single Tap", Toast.LENGTH_SHORT); 
    mToast.show(); 
    return true; 
} 

public class MyGestureDetector extends SimpleOnGestureListener { 

    private static final int SWIPE_MIN_DISTANCE = 120; 
    private static final int SWIPE_MAX_OFF_PATH = 250; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     Toast mToast = Toast.makeText(getApplicationContext(), "Fling", Toast.LENGTH_SHORT); 
     mToast.show(); 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 

      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       //do what you want on left swipe 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       //do what you want on right swipe 
      } 
     } catch (Exception e) { 
      // nothing 
     } 
     return false; 
    } 

    public boolean onSingleTapUp(MotionEvent arg0) { 
     Toast mToast = Toast.makeText(getApplicationContext(), "Single Tap", Toast.LENGTH_SHORT); 
     mToast.show(); 
     return true; 
    } 

} 

} 

答えて

1

を検出するジェスチャーのためにこれを使用しています。以下の例を参照してください:http://www.hascode.com/2010/05/creating-a-simple-gesture-app-with-android/

+0

あなたの答えはAndroDevありがとう、それは正しいです。実際には両方の答えが正しいです。 – Sha

5

私はあなたがあなたの目的のためのジェスチャ検出器を使用する必要があります

public class MyGestureDetector extends SimpleOnGestureListener { 

     private static final int SWIPE_MIN_DISTANCE = 120; 
     private static final int SWIPE_MAX_OFF_PATH = 250; 
     private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
     @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; 

       if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        //do what you want on left swipe 
       } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        //do what you want on right swipe 
       } 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 
     } 

    } 
+0

あなたがそのアクティビティのジェスチャーを適切な方法で適用しているかどうかを確認したら、なぜそれが私のために働いたのか。 – sankar

+0

あなたの答えはサンカールありがとう、それは正しいです。実際には両方の答えが正しいです。 – Sha

+0

2つの回答を受け入れることはできませんか? – Sha

関連する問題