如何将“按下”作为正常状态实现“反向点击”事件?

时间:2015-09-13 20:55:16

标签: android

我的Android应用需要一个特殊按钮,其正常状态为MouseDown。触发Click event时会触发MouseUp event

因此,此按钮实际上与普通按钮相反

它不需要DoubleClick event。在网上尝试搜索;找不到任何东西。

1 个答案:

答案 0 :(得分:1)

以下是我实施“ReverseButton”的方法:

import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;

public class CustomButton extends Button {
  private CustomButtonListener mListener;
  private boolean mPressedState;

  public CustomButton(Context context) {
      super(context);
  }

  public CustomButton(Context context, AttributeSet attrs) {
      super(context, attrs);
  }

  public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
      this(context, attrs, defStyleAttr, 0);
  }

  @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  public CustomButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
      super(context, attrs, defStyleAttr, defStyleRes);
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
      switch (event.getAction()) {
          case MotionEvent.ACTION_DOWN:
              mPressedState = true;
              break;
          case MotionEvent.ACTION_UP:
              if(mPressedState) {
                  mListener.onRelease(event);
              }
              mPressedState = false;
              break;
      }
      return super.onTouchEvent(event);
  }

  public void setOnReleaseListener(CustomButtonListener listener) {
      mListener = listener;
  }

  public interface CustomButtonListener{
      void onRelease(MotionEvent event);
  }
}