【问题标题】:Creating an animation sequence with images in android (SlideShow)在 android (SlideShow) 中创建带有图像的动画序列
【发布时间】:2012-04-08 09:46:37
【问题描述】:

我正在尝试设置不同图像的自定义动画幻灯片。我设法使用自定义视图为单个图像设置动画。现在我想为我的数组列表中的所有图像设置幻灯片放映。这样图像将一个接一个地显示。现在我有一个自定义视图,是否需要为每个图像创建更多视图?有什么想法吗?

自定义视图:

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

}

}

【问题讨论】:

    标签: android android-animation android-imageview android-image


    【解决方案1】:

    看看ImageSwitcher 小部件。它似乎完全符合您的需要。它缺少文档,因此您可能需要查看其父 ViewSwitcher 和 ViewAnimator 的文档。

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

    您可能遇到的一个问题是 ImageSwitcher 不创建其内部图像视图。您可以添加ViewFactory,如ApiDemos 所示,或者只是在布局文件中添加这些图像视图:

    <ImageSwitcher ...>
        <ImageView ... />
        <ImageView ... />
    </ImageSwitcher>
    

    【讨论】:

    • 感谢您的回答!我需要这些图像以编程方式运行特定动画,而不关注特定图像。我不认为 ImageSwitcher 会帮助我
    • 您误解了 Darth Beleg 的回答。 ImageSwitcher(或实际上,任何切换器)使您可以轻松访问动画,以便很好地交换图像。您可以使用所需的任何位图以编程方式填充这些图像,并省去重新发明这个轮子的麻烦(这就是您在上面所做的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2014-04-04
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多