Java 如何使按钮在按下时变大?(安卓工作室)

Java 如何使按钮在按下时变大?(安卓工作室),java,android,xml,button,pressed,Java,Android,Xml,Button,Pressed,我正在Android Studio中开发一个应用程序,希望我的自定义按钮在按下时变大,在发布时回到默认的定义状态。我编写了一个xml文件来定义我的按钮,但它不起作用。以下是自定义按钮的xml文件: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable=

我正在Android Studio中开发一个应用程序,希望我的自定义按钮在按下时变大,在发布时回到默认的定义状态。我编写了一个xml文件来定义我的按钮,但它不起作用。以下是自定义按钮的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/play_button_pressedhdpi"
        android:state_pressed="true" />
    <item android:drawable="@drawable/play_button_defaulthdpi"
        android:state_focused="true" />
    <item android:drawable="@drawable/play_button_defaulthdpi" />
</selector>
这是有道理的,但由于某些原因没有起作用


任何帮助都将不胜感激……

我使用MotiveEvent以这种方式调整按钮的大小:

button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    RelativeLayout.LayoutParams lp = (LayoutParams) b.getLayoutParams();
    if(event.getAction() == MotionEvent.ACTION_DOWN) {
        sendMessage("key1\n");
        lp.width=140;
        lp.height=140;
        button.setLayoutParams(lp);
    }
    if(event.getAction() == MotionEvent.ACTION_UP) {
        lp.width=90;
        lp.height=90;
        button.setLayoutParams(lp);
    }
    return false;
    }
});

希望有帮助。

我终于解决了这个问题。我创建了两个大小不同的独立图像,并使用setOnTouchListener()为按钮指定了相应的图像,用于以下两种状态
ACTION\u DOWN
ACTION\u UP

button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                float x = (float) 1.25;
                float y = (float) 1.25;

                button1.setScaleX(x);
                button1.setScaleY(y);
                button1.setBackgroundResource(R.drawable.blue_220);
            }

            else if(event.getAction() == MotionEvent.ACTION_UP)
            {
                float x = 1;
                float y = 1;

                button1.setScaleX(x);
                button1.setScaleY(y);
                button1.setBackgroundResource(R.drawable.blue_206);

            }
            return false;
        }
    });

结果如所需。

您可以再次单击按钮并调整按钮。getLayoutParams().height=newHeight和button.getLayoutParams().width=newWidthHi,我尝试了您的解决方案,但对我无效。当我按下按钮时,应用程序停止工作并崩溃。有办法吗?另外,
sendMessage()
是做什么的,在你的代码中的
b.getLayoutParams()
按钮中是
b
?是的,我从我的项目中复制了它,对不起,只使用你需要调整大小的按钮,如果应用程序再次崩溃,我需要日志来了解问题。日志没有说太多,代码中没有错误,但当我按下上面有
onTouchListener()
的按钮时,应用程序崩溃了。我是否需要导入任何包才能使用
onTouchListener()
button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                float x = (float) 1.25;
                float y = (float) 1.25;

                button1.setScaleX(x);
                button1.setScaleY(y);
                button1.setBackgroundResource(R.drawable.blue_220);
            }

            else if(event.getAction() == MotionEvent.ACTION_UP)
            {
                float x = 1;
                float y = 1;

                button1.setScaleX(x);
                button1.setScaleY(y);
                button1.setBackgroundResource(R.drawable.blue_206);

            }
            return false;
        }
    });