如何在Android中为ImageButtons实现更多类型的触摸?

时间:2014-03-23 09:49:45

标签: android touch motionevent

所以我有一个基本的线性布局,由6个ImageButton元素组成,这些元素在2x3网格中延伸到整个屏幕。我想创建一个如下工作的应用程序:

* 1) *如果短按任何ImageButtons,它将启动另一项活动

* 2) *如果用户将手指放在屏幕上,它会根据手指中的哪一个ImageButton播放声音(因此有6种不同的声音)...如果他移动了他的手指手指(仍然触摸屏幕)到另一个ImageButton,它将播放另一个声音(所有没有抬起他的手指)......最后当手指抬起时,它将根据元素开始活动,手指被抬起

我的问题是,选择这样做的方法是什么? MotionEvent类?因为只是OnClickListener的onClick()赢得了足够的恕我直言。 感谢

1 个答案:

答案 0 :(得分:0)

我认为你期待相同图像有两个不同的功能但是你可以通过使用点击和长按来实现这个概念你无法用单点触摸实现我建议你使用这个长按和单击示例这个问题是.....我将解释单个按钮,你将重复它为其他五个按钮....

 but.setOnTouchListener(new OnTouchListener() {         
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            detector = new GestureDetector(getApplicationContext(), new TouchDetector());

            return false;
        }
    });


 public class TouchDetector implements android.view.GestureDetector.OnGestureListener   {

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

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2,
            float distanceX, float distanceY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }



}

你尝试这个来实现你的逻辑但是这是一个简单的逻辑,你也可以使用这个逻辑

public class MainActivity extends Activity {
GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button but1 = (Button) findViewById(R.id.button1);
    Button but2 = (Button) findViewById(R.id.button2);
    Button but3 = (Button) findViewById(R.id.button3);
    Button but4 = (Button) findViewById(R.id.button4);
    Button but5 = (Button) findViewById(R.id.button5);
    Button but6 = (Button) findViewById(R.id.button6);
    but1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //Do here your Activity calling functions....
        }
    });

    but.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            //Do your sound Logic here
            return false;
        }
    });
// you just repeat this for all other Five buttons...        
}
}