Java 单击按钮时更改按钮图标,当按钮焦点丢失时更改活动正在执行的操作

Java 单击按钮时更改按钮图标,当按钮焦点丢失时更改活动正在执行的操作,java,android,android-layout,android-fragments,android-button,Java,Android,Android Layout,Android Fragments,Android Button,我想在我的android应用程序中制作一个按钮,这样当我将手指放在按钮上时(butten会聚焦),按钮的图标会发生变化(通过button.setBackgroundDrawable或类似的方式),当按钮失去焦点时(我将手指从按钮上移开)然后它做它应该做的事情,图标保持不变(转到另一个活动,检查smth,输入smth,等等)。我不知道哪个函数会说什么时候它被赋予了焦点,什么时候它失去了焦点。有什么想法吗?在触摸模式下,您无法聚焦。只要你一按按钮,它就处于按下模式。焦点仅适用于具有硬件按钮(或鼠标)

我想在我的android应用程序中制作一个按钮,这样当我将手指放在按钮上时(butten会聚焦),按钮的图标会发生变化(通过button.setBackgroundDrawable或类似的方式),当按钮失去焦点时(我将手指从按钮上移开)然后它做它应该做的事情,图标保持不变(转到另一个活动,检查smth,输入smth,等等)。我不知道哪个函数会说什么时候它被赋予了焦点,什么时候它失去了焦点。有什么想法吗?

在触摸模式下,您无法聚焦。只要你一按按钮,它就处于按下模式。焦点仅适用于具有硬件按钮(或鼠标)的设备,允许选择视图,然后“按”它。

将TouchListener注册到按钮:

button.setOnTouchListener(new ButtonDownListener());
这是你的听众

public class ButtonDownListener implements OnTouchListener{

           public boolean onTouch(View v, MotionEvent event){
            if(event == MotionEvent.ACTION_DOWN){
                //do your stuff
            }
            else if(event == MotionEvent.ACTION_UP){
                //do your stuff
            }

            return true;
        }
    }

您可以像这样使用onTouchListener

button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP){

        //This triggers when you lift your finger
    } else if(event.getAction() == MotionEvent.ACTION_DOWN) {

       //this triggers when you put your finger down
    }
    return false;
}

}))

在drawable中添加一个button_state.xml文件

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/onfocusonstatepressed" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/onstatepressed" />
<item android:state_focused="true" android:drawable="@drawable/onfocus"/>
<item android:state_focused="false" android:drawable="@drawable/normal" />
</selector>

我们能得到你的密码吗。!?使用
onTouchListener
如果不打算添加功能性,我建议使用standard View.onTouchListener而不是实现它。
android:background="@drawable/button_state"