java - 创建循环播放 5 张图像的幻灯片

标签 java android animation transition

我想创建一个图像幻灯片,在其中循环重复 5 个图像,直到按下按钮为止。我还希望图像之间有一些效果,以便过渡看起来不错。我可以创建幻灯片,但问题是它不重复。 这是我的代码:

public class Slides extends Activity implements OnClickListener {
    Button button;
    Boolean goingOn = false;
    AnimationDrawable animation;
    private TransitionDrawable trans;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.discolight);
        final ImageView lights = (ImageView) findViewById(R.id.img);

        button=(Button)findViewById(R.id.power);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(goingOn)
                {
                stopAnimation();
                goingOn=false;
                }
                else
                {
                startAnimation();
                goingOn=true;
                }
                }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu m) {
        MenuInflater inf = getMenuInflater();
        inf.inflate(R.menu.frontscreenmenu, m);
        return true;

    }

    class Starter implements Runnable {
        public void run() {
            animation.start();
        }
    }

    private void startAnimation() {
        animation = new AnimationDrawable();
        animation.addFrame(getResources().getDrawable(R.drawable.a), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.b), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.c), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.d), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.e), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.f), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.g), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.h), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.i), 1000);
        animation.addFrame(getResources().getDrawable(R.drawable.j), 1000);

        animation.setOneShot(true);


        ImageView imageView = (ImageView) findViewById(R.id.img);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                600, 800);
        params.alignWithParent = true;
        params.addRule(RelativeLayout.CENTER_IN_PARENT);

        imageView.setLayoutParams(params);
        imageView.setImageDrawable(animation);
        imageView.post(new Starter());

    }

    private void stopAnimation() {
        animation.stop();
    }

最佳答案

为此使用FrameAnimation

并添加frameanimatin.setOneShot(false);

关于java - 创建循环播放 5 张图像的幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21696141/

相关文章:

java - 使用 JQuery 选择和识别元素以在 Selenium 2 Java API 中使用它

java - 如何通过在Android持久 Bottom Sheet 中向上滑动从隐藏状态进入折叠状态?

java - LibGDX - 并非所有 Sprite 都被渲染

android - apk上传问题

javascript - 在JS中,我想检查cookie,如果不存在,则运行动画函数并写入cookie,如果存在,则跳过动画。

java - 我的 STS 无法运行

java - 如何动态更新 Activity 适配器?

java - Gradle 构建具有传递依赖关系的多模块项目

android - 动画 View 被翻译到椭圆形 View 后面

javascript - 这个浏览器内的轻量级动画是如何完成的?