如何在Flutter中制作这种动画?

时间:2019-01-17 10:28:31

标签: flutter flutter-layout flutter-animation

Video reference

请检查上面的链接以查看动画。

视频中的一个是用Java制作的,一个imageView使用UniversalImageLoader和Handler在2500毫秒的间隔内更改图像。

JavaCode:

int imgs[] = {R.drawable.efone, R.drawable.eftwo, R.drawable.efthree, R.drawable.effour, R.drawable.effive};

backgroundSlide = (ImageView) findViewById(R.id.bgSlide);
backgroundSlide.setImageResource(R.drawable.efone);

final Handler handler = new Handler();
Runnable runnable = new Runnable() {
    int i = 0;

    @Override
    public void run() {
        if (i > imgs.length - 1)
            i = 0;
        backgroundSlide.startAnimation(animAlpha);
        ImageLoader.getInstance().displayImage("drawable://" + imgs[i], backgroundSlide);
        i++;
        handler.postDelayed(runnable, 2500);
    }
};

Xml:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:id="@+id/bgSlide"
    android:src="@drawable/efone" />

1 个答案:

答案 0 :(得分:2)

提示:

首先添加

import 'dart:async';

假设您有图片列表。

List<String> imgURLs = ['img1', img2, img3.....N];

以下更改图片的代码:

int index = 0;
    const duration = const Duration(seconds:2); // change time as per your requirement 
    new Timer.periodic(duration, (timer){
      setState(){
        imageObj = imgURLs[index];
      }
      if(index >= imgURLs.lenght-1) {
        timer.cancel();
      }
      index++;
    });

可以使用initState方法将此代码放在您的位置,并使用 imageObj 在屏幕上设置图像。

  

imageObj 可能是 Image 类型,也可能是基于您的图像列表的类型