2012-04-08 116 views
0

我正在尝试设置不同图像的自定义动画幻灯片。我管理使用自定义视图为单个图像设置动画。现在我想为我的数组列表中的所有图像设置幻灯片放映。因此,图像将在彼此之后显示。现在我有一个自定义视图,我需要为每个图像制作更多视图吗?有任何想法吗?使用android中的图像创建动画序列(SlideShow)

自定义视图:

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

活动:

 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 

} 

}

回答

0

看看在ImageSwitcher部件。它似乎正是你所需要的。缺少相关文档,因此您可能需要检查其父母ViewSwitcher和ViewAnimator的文档。

基本上ImageSwitcher会执行以下操作:当您向其提供图片时,切换器会播放带有已隐藏图片的动画,并且同时用所提供的图片播放动画。它在内部在两个ImageView之间循环。

您可能会遇到的一个问题是ImageSwitcher不会创建其内部图像视图。为你解答

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

感谢:您既可以添加为ApiDemos所示的ViewFactory或者只是添加在布局文件,这些图像的看法!我需要这些图像以专门的动画在语法上运行,而不关注某个图像。我不认为ImageSwitcher会帮助我 – user182192 2012-04-08 11:48:08

+0

你误解了Darth Beleg的答案。 ImageSwitcher(或者其他任何切换器)让您可以轻松访问动画,以便很好地交换图像。你可以用你想要的任何Bitmaps以编程方式填充这些图像,并节省自己重新发明这个轮子的麻烦(这就是你上面做的)。 – 2012-04-18 15:50:29