0

Ich erstelle eine Animation, wo ich 3 Bilder, die über den Bildschirm animieren werden. Wenn das mittlere Bild die Mitte des Bildschirms erreicht, blendet es sich ein.Einblenden ist nur für die erste Animation Android

Alles funktioniert einwandfrei, nur wenn das erste Bild die Mitte erreicht, wird es eingeblendet. Wenn das zweite und dritte Bild in der Mitte erscheinen, werden sie nicht ausgeblendet in.

Jedes Bild hat seine eigene Ansicht. und die Einblendmethode wird auf allen Ansichten ausgeführt.

Bitte siehe unten stehenden Code. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Hier ist der Prozess, der die Folien simuliert, die sich über den Bildschirm bewegen. moveThree ist die Einblende-Animation. moveOne und moveTwo sind Übersetzungen für das Bild auf dem Bildschirm.

public static int secondProcess(AnimationListener activity, View apa1,View apa2, View apa3,int animationmove) 
{ 
    Log.d("2", "SECOND PROCESS"); 
    moveOne(activity, apa2); 
    moveTwo(activity,apa1); 
    animationmove = 3; 
    return animationmove; 

} 

public static int thirdProcess(AnimationListener activity, View apa1,View apa2,View apa3, int animationmove) 
{ 
    Log.d("3", "THIRD PROCESS"); 
    moveThree(activity,apa1); 
    animationmove = 4; 
    return animationmove; 
} 

public static int fourthProcess(AnimationListener activity, View apa1, View apa2,View apa3,int animationmove) 
{ 
    Log.d("4", "FOURTH PROCESS"); 
    moveOne(activity, apa3); 
    moveTwo(activity, apa2); 
    moveFour(activity,apa1); 
    animationmove = 5; 
    return animationmove; 

} 


public static int fifthProcess(AnimationListener activity, View apa1,View apa2,View apa3, int animationmove) 
{ 
    Log.d("5", "FIFTH PROCESS"); 
    moveThree(activity,apa2);//IN THE SECOND VIEW HERE THE IMAGE IS NOT FADING 
    animationmove = 6; 
    return animationmove; 

} 

moveThree Methode:

private static void moveThree(AnimationListener activity, View apa) 
{ 
    Log.v("MOVETHREE", "Started move3"); 
    AnimationSet picMov3 = new AnimationSet(true); 
    picMov3.setAnimationListener(activity); 
    AlphaAnimation fadein = new AlphaAnimation((float) 0.3, 1); 
    fadein.setFillAfter(true); 

    fadein.setDuration(duration); 
    picMov3.addAnimation(fadein); 
    TranslateAnimation trans1 = new TranslateAnimation(-500, -500, 0, 0); 
    trans1.setDuration(duration); 
    picMov3.setFillAfter(true); 
    picMov3.setInterpolator(interpolator); 
    picMov3.addAnimation(trans1); 

    apa.startAnimation(picMov3); 


} 

Antwort

1

Sie rufen nur moveThree für den ersten Blick. Sie müssen auch anrufen, wenn für die anderen Ansichten:

moveThree(activity,apa1); 
moveThree(activity,apa2); 
moveThree(activity,apa3); 
+0

guten Punkt! Ich habe vergessen, zu meinem Code über dem Fünfprozess hinzuzufügen, wo ich in der zweiten Ansicht apa2 verblasse. Ich habe den Code bearbeitet – user182192