0

Ich versuche, eine benutzerdefinierte animierte Diaschau mit verschiedenen Bildern einzurichten. Ich verwalte die Animation für ein einzelnes Bild mit einer benutzerdefinierten Ansicht. Jetzt möchte ich die Diashow für alle Bilder in meiner Arraylist einrichten. Damit die Bilder nacheinander angezeigt werden. Jetzt habe ich eine benutzerdefinierte Ansicht muss ich mehr Ansichten für jedes Bild machen? Irgendwelche Ideen?Erstellen einer Animationssequenz mit Bildern in android (DiaShow)

Customized Ausblick:

public class AnimationPhotoViewA extends ImageView { @Overridepublic void setImageBitmap(Bitmap bm) {super.setImageBitmap(bm);image= bm;}

ACTIVITY:

 public class PhotoSyncActivity extends Activity implements AnimationListener { 
@Override 
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); 

    setContentView(R.layout.photo_sync_screen); 
    ArrayList<String> photoPaths = new ArrayList<String>(); 
    photoPaths = getAllPhotos(Environment.getExternalStorageDirectory(), 
      photoPaths); 
    images = new Bitmap[photoPaths.size()]; 
    Log.v(ACCESSIBILITY_SERVICE, "photo array!" + photoPaths); 

    apa1 = (AnimationPhotoViewA) findViewById(R.id.animation_viewA); 

      //START ANIMATION 

    animationmove = PhotoAnimationProcess.moveOne(this,apa1,animationmove); 

    File imgFile = new File(photoPaths.get(0)); 

    if (imgFile.exists()) 
    { 
     images[0] = decodeFile(imgFile); 
    } 
} 

@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 


    // SET IMAGE IN THE VIEW 
    apa1.setImageBitmap(resizedimage); 

} 
private void addPicture() { 
    // TODO Auto-generated method stub 

} 



public void onAnimationStart(Animation animation) 
{ 
    // TODO Auto-generated method stub 

} 

public void onAnimationEnd(Animation animation) 
{ 
    // TODO Auto-generated method stub 

    switch (animationmove) 
    { 
    case move1: 
     animationmove = PhotoAnimationProcess.moveOne(this, apa1, animationmove); 
     break; 
    case move2: 
     addPicture(); 
     animationmove = PhotoAnimationProcess.moveTwo(this,apa1,animationmove); 

     break; 
    case move3: 
     animationmove = PhotoAnimationProcess.moveThree(this,apa1,animationmove); 
     break; 
    case move4: 
     animationmove = PhotoAnimationProcess.moveFour(this,apa1,animationmove);; 
     break; 
    case move5: 
     animationmove = PhotoAnimationProcess.moveFive(this,apa1,animationmove); 
     break; 

    default: 
     break; 
    } 

    Log.v(ALARM_SERVICE, "Animation Type" + animation.toString()); 

} 



public void onAnimationRepeat(Animation animation) { 
    // TODO Auto-generated method stub 

} 

}

Antwort

0

Werfen Sie einen Blick auf die ImageSwitcher Widget. Es scheint genau das zu tun, was du brauchst. Es gibt einen Mangel an Dokumentation dafür, so dass Sie möglicherweise die Dokumente für die Eltern ViewSwitcher und ViewAnimator überprüfen müssen.

Grundsätzlich führt ImageSwitcher folgendes aus: Wenn Sie ein Bild hinzufügen, spielt der Switcher eine Out-Animation mit einem bereits versteckten Bild ab und spielt gleichzeitig eine in-Animation mit dem mitgelieferten Bild ab. Intern wechselt es zwischen zwei ImageViews.

Ein Problem, das auftreten kann, ist, dass ImageSwitcher seine internen Bildansichten nicht erstellt. Sie können entweder ein ViewFactory, wie es im ApiDemos hinzufügen oder einfach nur diese Bildansichten in der Layout-Datei hinzufügen:

<ImageSwitcher ...> 
    <ImageView ... /> 
    <ImageView ... /> 
</ImageSwitcher> 
+0

Dank für Sie beantworten! Ich brauche diese Bilder, um grammatikalisch mit einer bestimmten Animation ohne Fokus auf ein bestimmtes Bild zu laufen. Ich glaube nicht, dass der ImageSwitcher mir helfen wird. – user182192

+0

Sie missverstehen Darth Belegs Antwort. Der ImageSwitcher (oder wirklich jeder der Switcher) gibt Ihnen einfachen Zugriff auf Animationen, um Ihre Bilder schön ein- und auszublenden. Sie können diese Bilder programmatisch mit den gewünschten Bitmaps füllen und sich die Mühe ersparen, dieses Rad neu zu erfinden (was Sie oben tun). –