我的drawable文件夹中有两个图像,我希望每隔x次在视图中交替显示两个图像。 我尝试使用Asynctask但不起作用,我找不到解决方案。
我的xml代码
<ImageView
android:id="@+id/imageload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="64dp"
android:adjustViewBounds="false"
android:baselineAlignBottom="false"
android:contentDescription="@string/imatge"
android:cropToPadding="false"
android:fitsSystemWindows="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:src="@drawable/hdtitol2" />
我用以下方式打电话给:
new ModifyImage().execute(null,null,null);
主类包含具有异步代码的de class
public class ModifyImage extends AsyncTask<Void, Void, Void> {
ImageView img= (ImageView)findViewById(R.id.imageload);
@Override
protected void onPreExecute(){
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
int i = 0;
boolean opt = true;
boolean exit = false;
while(!exit){
if(i == 1000){
i = 0;
if(!opt){
img.setImageResource(R.drawable.blackhdtitol2);
opt =true;
}else{
opt = false;
img.setImageResource(R.drawable.hdtitol2);
}
}
i++;
}
return null;
}
@Override
protected void onPostExecute(Void i){
}
}
答案 0 :(得分:2)
这样做,
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Integer tag = (Integer) img.getTag();
if(tag == R.drawable.blackhdtitol2){
img.setImageResource(R.drawable.blackhdtitol2);
img.setTag(R.drawable.blackhdtitol2);
}else{
img.setImageResource(R.drawable.hdtitol2);
img.setTag(R.drawable.hdtitol2);
}
}
}, 60*1000);
答案 1 :(得分:1)
最后,我找到了一个可能的解决方案,解决了我对这个问题的所有de java代码。
我找到的解决方案是创建一个新类
public class RepeatingThread implements Runnable {
private final Handler mHandler = new Handler();
public RepeatingThread() {
}
@Override
public void run() {
final ImageView img = (ImageView) findViewById(R.id.imageload);
if(img.getVisibility() == View.INVISIBLE ){
img.setVisibility(View.VISIBLE);
}else{
img.setVisibility(View.INVISIBLE);
}
mHandler.postDelayed(this, 1000);
}
}
创建函数中的代码:
final Thread t = new Thread(new RepeatingThread());
t.start();