2015-09-13 30 views
0

我的Android應用程序需要一個特殊的按鈕,其正常狀態爲MouseDown。當MouseUp event被解僱時,Click event被解僱。如何用「buttondown」作爲正常狀態來實現「反向點擊」事件?

所以這個按鈕實際上是正常的按鈕

它並不需要一個DoubleClick event相反。試圖在網絡上搜索;找不到任何東西。

+0

我想你需要的是一個切換按鈕http://developer.android.com/guide/topics/ui/controls/togglebutton.html –

+0

切換按鈕不會。該按鈕需要保持按下,短按釋放按鈕應該觸發事件。 –

+0

好吧,所以通過「短版」你的意思是「短暫的觸摸」,對吧?這看起來像你只是想扭轉按鈕的外觀,即。使其看起來在默認狀態下按下,按下時正常。我認爲你可以通過自定義選擇器來實現,如官方指南中所述http://developer.android.com/guide/topics/ui/controls/button.html#CustomBackground –

回答

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); 
    } 
} 
相關問題