我想创建一个带有时间延迟切换图像的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();
}
}
您可以使用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);
}