Animierten übergang zwischen zwei Bildansicht
Auf der einen Seite habe ich ein layout mit zwei Bildansicht :
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/image_cross2"
android:layout_width="wrap_content"
android:layout_height="@dimen/image_size"
android:layout_gravity="top"
android:scaleType="centerCrop" />
<ImageView
android:id="@+id/image_cross1"
android:layout_width="wrap_content"
android:layout_height="@dimen/image_size"
android:layout_gravity="top"
android:scaleType="centerCrop" />
</FrameLayout>
Auf der anderen Seite habe ich eine Liste von Bild-Ressourcen :
static int mImages[] = new int[] {
R.drawable.artistes,
R.drawable.couple1,
R.drawable.couple2,
R.drawable.couple3,
R.drawable.enfant,
R.drawable.manege,
R.drawable.manege2,
R.drawable.metropolitain,
R.drawable.panoramique,
R.drawable.sacrecoeur };
ich habe auch einen Planer aus Hf + postDelayed (), um die Bilder eins nach dem anderen mit einem timer. Dies ist in Ordnung, die
mein Problem ist über den übergang animation von einer Bildansicht zu den anderen, wohl wissend, dass ich habe zum reinigen des imageviews jeder Zeit zu vermeiden OutOfMemoryExceptions :
Ich jetzt tun, dass in den schduled callback-Methode :
if (mIndex == mImages.length) {
mIndex = 0; //repeat
}
if (mIndex % 2 != 0) { //pair
mImageCross2.setImageResource(mImages[mIndex++]);
Utils.crossfade(mImageCross2, mImageCross1, 1000/*duration*/);
mImageCross1.setImageResource(0);
} else {
mImageCross1.setImageResource(mImages[mIndex++]);
Utils.crossfade(mImageCross1, mImageCross2, 1000);
mImageCross2.setImageResource(0);
}
mit dieser animation :
public static void crossfade(final ImageView viewIn, final ImageView viewOut, int duration) {
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(duration);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setDuration(duration);
fadeOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
viewOut.setVisibility(View.GONE);
}
});
fadeIn.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
viewIn.setVisibility(View.VISIBLE);
}
});
viewOut.startAnimation(fadeOut);
viewIn.startAnimation(fadeIn);
}
Die animation ist nicht so toll, der fade ist nicht wirklich glatt, was kann ich tun, um es glatt, während er zu reinigen Bildansicht jedes mal ?
InformationsquelleAutor der Frage An-droid | 2014-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Erster Vorschlag ist, vereinfachen Sie die meisten der code. Android hat diese nette kleine Klasse namens
TransitionDrawable
so können Sie nur 1 Bild, Ansicht und Nutzung der TransitionDrawable:
und rufen Sie die animation auf
td
mithalten und mit der
postDelayed
um Sie auszulösenInformationsquelleAutor der Antwort Budius