I expect that your images fit in the memory.
You can add ImageView for every image to a FrameLayout and let just one ImageView be visible.
Then you can even use fade in / fade out animation to improve the effect when switching to next image.
ImageView[] imageViews;
int currentView = 0;
...
// fill imageViews
...
ImageView image1 = imageViews[currentView];
if (moveRight) {
if (++currentView >= imageViews.length) currentView = 0;
} else {
if (--currentView < 0) currentView = imageViews.length - 1;
}
ImageView image2 = imageViews[currentView];
image1.setVisibility(View.INVISIBLE);
image1.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_out));
image2.setVisibility(View.VISIBLE);
image2.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in));
anim/fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:duration="150"
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
</set>
anim/fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:duration="150"
android:fromAlpha="1.0"
android:toAlpha="0.0"/>
</set>
About hardware acceleration, I think in this case Android can handle it for you.
From Android 3.0 you can define it in the manifest for application or activity:
android:hardwareAccelerated="true"
Alternatively you can set it just for specific views.
Using XML:
android:layerType="hardware"
Using Java:
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
Here you can find more information about Hardware Acceleration