I have a slight problem. I have 27 images, with filenames img0001 up to img00027, how do I get them to play in sequence? As currently it plays img0001, img00010 -> img00019, img0002 -> img00027.
This is what I have in MainActivity.java to handle the switch between images:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
Field[] drawables = R.drawable.class.getFields();
for (Field f : drawables) {
if (f.getName().contains("img"))
imageArrayList.add(getResources().getIdentifier(f.getName(), "drawable", getPackageName()));
}
}
protected void onStart() {
super.onStart();
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
int i = 0;
@Override
public void run() {
imageView.setImageResource(imageArrayList .get(i));
Animation fade = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_intervals);
imageView.startAnimation(fade);
i++;
if (i > imageArrayList.size() - 1) {
i = 0;
}
handler.postDelayed(this, 4000); // for interval images
}
};
handler.postDelayed(runnable, 8000); // for initial image
}
Any help would be appreciated. I have tired with just 9 images, img0001-img0009 and that works fine. I feel it is a filename issue, but unsure of how to fix it.
As you said, it is a filename issue. Files are sorted alphanumerically, you should sort imageArrayList according to your needs. Hence, implementing a Comparator (asked here), you should also consider this.