按下按钮时更改图像,使按钮图像在释放时不发生变化
当我按下按钮时图像发生变化,但我的问题是当我释放按钮时,图像再次发生变化(不保留图像)。我是Java编程新手。按下按钮时更改图像,使按钮图像在释放时不发生变化
我的布局:
<Button
android:background="@drawable/volume"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
这是我在绘制XML:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/volume_off" /> <!-- pressed -->
<item android:drawable="@drawable/volume_on" /> <!-- default -->
如果你想改变你的按钮的图像永久当你点击它,可以方便地做到这一点编程,你的按钮的onclick空洞内。 例如,如果
此搜索:R.drawable.image_first 图像2:R.drawable.image_second
,并在你的XML布局文件你必须:
<Button
android:background="@drawable/volume"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="click"/>
中,你可以做的活动
:
public Class myActivity extends Activity{
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_layout);
mButton = (Button) findViewById(R.id.button);
}
public void click(View v){
mButton.setBackgroundResource(R.drawable.image_second);
}
}
如果你想再次点击后回来之前的图像,只保存按钮的状态(布尔点击ed = true/false)并在public void click中放置一个if语句。
yess,它的工作原理,,,但正如你所说,回到以前的形象,我应该在里面,如果声明,,,我混淆如何在公共空间内的声明如果在巴斯科avr和arduino IDE,我可以轻松理解,但在Java中,我真的不明白,,,你会给示例代码,如果声明在公共空白...感谢之前, –
感谢亚历克斯,你让我的一天..:D –
要从选择删除默认图像
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/volume_off" /> <!-- pressed -->
</selector>
删除此行<!--<item android:drawable="@drawable/volume_on" /> remove default-->
当按钮状态改变时,它被设置为默认值。
<Button
android:background="@drawable/volume"
android:layout_width="90dp"
android:layout_height="90dp"
android:src="@drawable/volume_on"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
如果我删除该行,所以按钮是不可见的,按钮是可见的(显示Volume_off),当我按下按钮, –
在你的情况,你想改变你的音量指示器,我认为你应该这样做编程。
//At the top of your activity,declare a global variable
boolean isVolumeOn = true;
volumeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//check your volume status
if(isVolumeOn){
view.setBackgroundResource(R.drawable.volume_off);
isVolumeOn = false;
//Turn off your volume here
}else{
view.setBackgroundResource(R.drawable.volume_on);
isVolumeOn = true
//Turn on your volume here
}
}
});
感谢QuangNguyen回应我的问题,我不明白与“isVolumeOn”。那什么意识? 可否给我更清楚的示例程序,对不起,我这里是新的.. –
感谢QungNguyen,我真的很感激它 –
您是否添加了用户可以打开或关闭应用程序中的音量的功能? –
<Button
android:id="@+id/button"
android:background="@drawable/volume_on"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="click" />
在我MainActivity.java
public Class myActivity extends AppCompatActivity{
键音量; boolean isPressed = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_layout);
volume = (Button) findViewById(R.id.button);
}
public void click(View v){
if (isPressed) {
volume.setBackgroundResource(R.drawable.volume_off);
Toast.makeText(this, "Volume Off",
Toast.LENGTH_SHORT).show();
}else{
volume.setBackgroundResource(R.drawable.volume_on);
Toast.makeText(this, "Volume On",
Toast.LENGTH_SHORT).show();
}
isPressed=!isPressed;
}
我想也许你真正需要的东西是ToggleButton – RRTW
它的作品,,,感谢所有,,,我真的很感激它。 –