屏幕imageview中的替代图像

时间:2013-05-04 18:44:52

标签: android android-asynctask imageview android-imageview

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

    }

}

2 个答案:

答案 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();