使用 android 中的处理程序设置背景
Setting the background using a handler in android
我想在单击按钮时更改背景,但时间很短。我正在使用处理程序
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
relativeLayout = new RelativeLayout(MainActivity.this);
relativeLayout.setBackgroundResource(R.drawable.ic_launcher);
setContentView(relativeLayout);
}
};
handler.postDelayed(r,2000);
}
});
} }
但是,现在改变背景需要两秒,而不是改变两秒。有人有想法吗?
谢谢!
您已使用 handler.postDelayed
。因此 运行nable 中的代码将在 2 秒后 运行。要使其按照您的意愿工作,一种方法是将设置背景的代码带入 运行nable 之外。然后在 运行nable 中,您可以再次使用 setContentView
将其设置为前一个。
不要这样做。
改为使用 StateListDrawable。 正是为了这个目的。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/color_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/color_normal" />
</selector>
将其设置为您的按钮的背景。
你可以这样做:
private boolean mState;
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mState) {
return;
}
mstate = true;
relativeLayout.setBackgroundResource(R.drawable.newcolor); //this color will last for 2sec
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
mState=false;
relativeLayout.setBackgroundResource(R.drawable.oldcolor);
}
};
handler.postDelayed(r,2000);
}
});
我想在单击按钮时更改背景,但时间很短。我正在使用处理程序
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
relativeLayout = new RelativeLayout(MainActivity.this);
relativeLayout.setBackgroundResource(R.drawable.ic_launcher);
setContentView(relativeLayout);
}
};
handler.postDelayed(r,2000);
}
});
} }
但是,现在改变背景需要两秒,而不是改变两秒。有人有想法吗?
谢谢!
您已使用 handler.postDelayed
。因此 运行nable 中的代码将在 2 秒后 运行。要使其按照您的意愿工作,一种方法是将设置背景的代码带入 运行nable 之外。然后在 运行nable 中,您可以再次使用 setContentView
将其设置为前一个。
不要这样做。
改为使用 StateListDrawable。 正是为了这个目的。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/color_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/color_normal" />
</selector>
将其设置为您的按钮的背景。
你可以这样做:
private boolean mState;
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mState) {
return;
}
mstate = true;
relativeLayout.setBackgroundResource(R.drawable.newcolor); //this color will last for 2sec
Handler handler = new Handler();
Runnable r = new Runnable() {
public void run() {
mState=false;
relativeLayout.setBackgroundResource(R.drawable.oldcolor);
}
};
handler.postDelayed(r,2000);
}
});