我希望用户将手指从屏幕上移开后,我的按钮似乎会被按下。我正在使用两个图像来模拟被按下的底部。任何帮助都很好
ImageButton imageButton;
boolean isPressed = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageButton =(ImageButton) findViewById(R.id.buttonID);
final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.sound);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isPressed) {
imageButton.setBackgroundResource(R.drawable.image);
}
else{
imageButton.setBackgroundResource(R.drawable.ispressed);
}
isPressed = !isPressed;
mediaPlayer.start();
Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
}
});
}
}
答案 0 :(得分:1)
这是使用"State list" drawable的不错选择。您创建一个可绘制对象,其中一个图像用于“按下”状态,另一图像用于默认状态,然后将其分配给按钮。您不必对按钮背景进行任何实时更新;它会自动为您在两张图片之间转换。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ispressed"/>
<item android:drawable="@drawable/image"/>
</selector>
现在,您只需直接将按钮背景设置为此(使用Java或XML):
imageButton =(ImageButton) findViewById(R.id.buttonID);
imageButton.setBackgroundResource(R.drawable.selector);
然后您不必在OnClickListener
中进行任何更新:
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isPressed = !isPressed;
mediaPlayer.start();
Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
}
});