【问题标题】:Button click to setOnGenericMotionListener event using mouse scroll work使用鼠标滚动工作的按钮单击以设置 OnGenericMotionListener 事件
【发布时间】:2016-04-28 08:42:42
【问题描述】:

先生, 我正在使用按钮键,如果我将鼠标光标指向按钮,它会显示一些值,例如 Eg:5,然后在使用鼠标滚动的 setOnGenericMotionListener 事件上,Eg:5 会根据鼠标滚动而变化以增加和减少值但是现在我想移动鼠标光标点的任何位置需要使用鼠标滚动事件设置 setOnGenericMotionListener 事件来处理该特定按钮如何执行此事件?

活动

public class MainActivity extends Activity {
Button button;
int x,f;
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button=(Button)findViewById(R.id.button1);                  
    button.setOnGenericMotionListener(new OnGenericMotionListener() {
    @Override
        public boolean onGenericMotion(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            switch (event.getAction()) {
            case MotionEvent.ACTION_SCROLL:             
                if (event.getAxisValue(MotionEvent.AXIS_VSCROLL) > 0.0f)
                {
                    x=Integer.parseInt(button.getText().toString());
                    f=x+5;
                    button.setText(""+f); 
                }
                else
                {
                    x=Integer.parseInt(button.getText().toString());
                    f=x-5;
                    button.setText(""+f); 
                }
            }
            return false;
        }
    });
}}

【问题讨论】:

    标签: java android mouseevent motionevent


    【解决方案1】:

    您不应该使用这种方法来检测触摸事件。 View.onGenericmotionEvent 中的描述:

        /**
         * Implement this method to handle generic motion events.
         * <p>
         * Generic motion events describe joystick movements, mouse hovers, track pad
         * touches, scroll wheel movements and other input events.  The
         * {@link MotionEvent#getSource() source} of the motion event specifies
         * the class of input that was received.  Implementations of this method
         * must examine the bits in the source before processing the event.
         * The following code example shows how this is done.
         * </p><p>
         * Generic motion events with source class {@link InputDevice#SOURCE_CLASS_POINTER}
         * are delivered to the view under the pointer.  All other generic motion events are
         * delivered to the focused view.
         * </p>
         * <pre> public boolean onGenericMotionEvent(MotionEvent event) {
         *     if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) {
         *         if (event.getAction() == MotionEvent.ACTION_MOVE) {
         *             // process the joystick movement...
         *             return true;
         *         }
         *     }
         *     if (event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) {
         *         switch (event.getAction()) {
         *             case MotionEvent.ACTION_HOVER_MOVE:
         *                 // process the mouse hover movement...
         *                 return true;
         *             case MotionEvent.ACTION_SCROLL:
         *                 // process the scroll wheel movement...
         *                 return true;
         *         }
         *     }
         *     return super.onGenericMotionEvent(event);
         * }</pre>
         *
         * @param event The generic motion event being processed.
         * @return True if the event was handled, false otherwise.
         */
        public boolean onGenericMotionEvent(MotionEvent event) {
            return false;
        }
    

    这个方法的一些使用案例你可以找到here

    顺便说一句,您应该改用GestureDetector 来处理您的手势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多