1

我的可绘制文件夹中有两个图像,我希望每 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 类

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){

    }

}
4

2 回答 2

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);
于 2013-05-04T19:48:32.237 回答
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();
于 2013-05-05T15:38:19.157 回答