使用 Handler.postDelayed(Runnable, 1000) 實現每秒切換圖片,邏輯無誤:
private Handler handler = new Handler();
private int[] resIds = {R.drawable.f1, R.drawable.f2, R.drawable.f3, R.drawable.f4};
private int index = 0;
private Runnable runnable = new Runnable() {
@Override public void run() {
index = (index + 1) % 4;
imageView.setImageResource(resIds[index]);
handler.postDelayed(this, 1000);
}
};
@Override protected void onCreate(Bundle savedInstanceState) {
// ...
handler.postDelayed(runnable, 1000);
}
錯誤發生在 :app:mergeDebugResources 階段,與程式碼無關。原因是 res/drawable/ 下有 假 PNG 或損壞的 .9.png。
.9.png 結尾。.png。Build → Clean Project → Rebuild Project。Handler 邏輯正確,建置失敗純屬資源檔問題。檢查所有 .9.png 是否符合 NinePatch 規範,或將不需拉伸的圖改為普通 PNG。