繁体   English   中英

按钮单击以使用鼠标滚动工作设置OnGenericMotionListener 事件

[英]Button click to setOnGenericMotionListener event using mouse scroll work

先生,我正在使用按钮键,如果我将鼠标光标点移动到按钮,它会显示一些类似于 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;
        }
    });
}}

您不应使用此方法来检测触摸事件。 在 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;
    }

您可以在此处找到此方法的一些使用案例

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM