在时间轴上切换图像小部件

问题描述 投票:0回答:1

我想创建一个带有时间延迟切换图像的android小部件。我不知道该怎么做。我应该在methood onUpdate中创建线程吗?我的layout.xml文件的此示例:

    <ImageButton
        android:id="@+id/imageViewWGT"
        android:background="@drawable/dog" />

这就是我想知道的正确方法:

public class MainActivity extends AppWidgetProvider {
    private int counter = 0;
    private ImageView wgt_img;
    wgt_img = wgt_img.findViewById(R.id.imageViewWGT);

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            if (counter%2 == 0){
                                wgt_img.setImageResource(R.drawable.dog);
                            }else
                                wgt_img.setImageResource(R.drawable.cat);

                        }
                    });
                    counter++;
                    try {
                        Thread.sleep(1000);     // sleep 1 sec
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}
android android-studio android-widget delay
1个回答
0
投票

您可以使用postDelayed类的Handler方法,例如

// Initialisation
Handler handler = new Handler();
int counter = 0;
long switchDelay = 1000L;

// Function for switch images
public void switchImage(){
     handler.postDelayed(new Runnable() {
         @Override
         public void run() {
             if (counter%2 == 0){
                 wgt_img.setImageResource(R.drawable.dog);
             }else {
                 wgt_img.setImageResource(R.drawable.cat);
             }
             counter++;
             // Recall method
             switchImage();
         }
     }, 1000);
 }
© www.soinside.com 2019 - 2024. All rights reserved.