我有这个代码试图让我的应用每5秒更改一次背景,但是,它只显示我的数组中的第一个图像。是否有一个简单的调整,我可以这样做,它将连续贯穿5个不同的图像??
以下是我在MainActivity.class中的内容
int count=0; //outside oncreate
//all that is below is within oncreate
final int[] drawablearray=new int[]{R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five};
new Handler().postDelayed(new Runnable() {
public void run() {
if(count<drawablearray.length){
MainActivity.this.getWindow().
setBackgroundDrawableResource(drawablearray[count]);
count++;
}
else{
count=0;
}
}
}, 5000);
感谢所有人和任何帮助!!
答案 0 :(得分:5)
您需要递归调用该方法。您目前的设置方式只能调用一次。
int count =0;
boolean abort;
onResume(){
super.onResume();
abort = false;
this.changeBackground(count);
}
onPause(){
abort = true;
super.onPause();
}
private void changeBackground(int count){
if (abort)
return;
new Handler().postDelayed(new Runnable() {
public void run() {
if(count<drawablearray.length){
count++;
}
else{
count=0;
}
changeBackgroundColor(count);
changeBackground(count);
}
}, 5000);
}
private void changeBackgroundColor(int count){
if (abort)
return;
MainActivity.this.getWindow().
setBackgroundDrawableResource(drawablearray[count]);
}
答案 1 :(得分:0)
旋转无限循环。此外,您可以使用%
删除if-else条件:
while (changeBackground == true)
{
new Handler().postDelayed(new Runnable() {
public void run() {
MainActivity.this.getWindow().
setBackgroundDrawableResource(drawablearray[count]);
count = (count + 1) % drawablearray.length;
}, 5000);
}
PS:您可能希望从某个事件配置背景更改,例如在事件e上,应停止更改背景。此类事件的一个示例可以是从一个活动切换到另一个活动。您可以通过设置/重置变量changeBackground
来实现此目的。
答案 2 :(得分:0)
@BatchSize(size = 20)
@ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, fetch = FetchType.LAZY,targetEntity=Site.class)
@JoinTable(name = "USER_SITE",
joinColumns = { @JoinColumn(name = USER_ID, nullable = false) },
inverseJoinColumns = { @JoinColumn(name = "SITE_ID", nullable = false) })
private Set<ISite> userSites;