Android(JAVA)中的悬停按钮动作

时间:2018-07-06 21:37:10

标签: java android xml

我已经创建了一个木琴应用程序,我希望它在将其滑过木琴的条形(常规按钮)时能够识别我的手指,并根据手指的位置发出正确的(不同的)声音-在操作过程中不要抬起它滑动。

为简化问题,我首先尝试在将手指滑向它的边界后,从另一个柱开始,仅使其中一个柱响应。

这是我进行的5次尝试:

在这里,酒吧根本没有反应:

bC.setOnGenericMotionListener(new View.OnGenericMotionListener() {
        @Override
        public boolean onGenericMotion(View view, MotionEvent motionEvent) {
            switch(motionEvent.getAction()){
                case ACTION_HOVER_ENTER:
                    mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
                    break;
            }
            return false;
        }
    });

在这里,我按下响应条并向下滑动手指而没有抬起它,只要我的手指触摸屏幕,第一条条的声音就会不断重复(而我的目标是只发出一次声音)。而且当我将手指从边框中滑入时,按钮仍然没有响应:

bC.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
                    mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
            return false;
        }
    });

这根本没有让酒吧做出回应

bC.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch(motionEvent.getAction()){
                    case ACTION_HOVER_ENTER:
                        mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
                        break;
                }
                return false;
            }
        });

一个人也没有做出回应

bC.setOnHoverListener(new View.OnHoverListener() {
        @Override
        public boolean onHover(View view, MotionEvent motionEvent) {
            mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
            return false;
        }
    });

与前面的示例一样,该示例并没有使栏完全响应

bC.setOnHoverListener(new View.OnHoverListener() {
        @Override
        public boolean onHover(View view, MotionEvent motionEvent) {
            switch (motionEvent.getAction()){
                case ACTION_HOVER_ENTER:
                    mSoundPool.play(mCSoundId, LEFT_VOLUME, RIGHT_VOLUME, PRIORITY, NO_LOOP, NORMAL_PLAY_RATE);
                    break;
            }
            return false;
        }
    }); 

0 个答案:

没有答案