Android的 - 在ImageView的交叉淡入淡出多发图片 [英] Android - Crossfade mutiple images in an ImageView

查看:354
本文介绍了Android的 - 在ImageView的交叉淡入淡出多发图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作,需要多个图像,

I am working on an application which needs image cross-fading between multiple images,

我有什么:一个ImageView的和50可绘(巴纽),我会从云端下载

What I have: an ImageView and 50 drawables (.png) which I will download from the cloud

我想:50应绘制交叉淡入淡出(淡入和淡出)连续几秒钟的时间间隔

What I want: 50 drawable should crossfade (fade in and out) sequentially between an interval of some seconds

我曾尝试:基于一些答案在这里计算器,我尝试了TransitionDrawable技术,但我只能交叉淡入淡出之间2图像,而不是更多的与感人

What I have tried: Based on some answers here on stackoverflow, I tried the TransitionDrawable technique, but I could only crossfade between 2 images and not more and that to with touching.

我所指的视频: https://www.youtube.com/watch?v= atH3o2uh_94

推荐答案

一个自定义视图来做到这一点:

A custom view to do that:

public class FadeView extends FrameLayout {
    private long mFadeDelay = 1000;
    private ImageView mFirst;
    private ImageView mSecond;
    private boolean mFirstShowing;

    public FadeView(Context context) {
        super(context);
        init(context);
    }

    public FadeView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public FadeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

    private void init(Context c){
        mFirst = new ImageView(c);
        mSecond = new ImageView(c);

        mFirst.setAlpha(1.0f);
        mSecond.setAlpha(0.0f);

        mFirstShowing = true;

        addView(mFirst);
        addView(mSecond);
    }

    public void setFadeDelay(long fadeDelay) {
        mFadeDelay = fadeDelay;
    }

    public void ShowImage(Drawable d){
        if(mFirstShowing){
            mSecond.setImageDrawable(d);
            mSecond.animate().alpha(1.0f).setDuration(mFadeDelay);
            mFirst.animate().alpha(0.0f).setDuration(mFadeDelay);
        }else {
            mFirst.setImageDrawable(d);
            mSecond.animate().alpha(0.0f).setDuration(mFadeDelay);
            mFirst.animate().alpha(1.0f).setDuration(mFadeDelay);
        }

        mFirstShowing = !mFirstShowing;
    }
}

用法:

public class test extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final FadeView fw = new FadeView(this);
        setContentView(fw);

        fw.setOnClickListener(new View.OnClickListener() {
            Drawable d1 = getResources().getDrawable(android.R.drawable.ic_dialog_alert);
            Drawable d2 = getResources().getDrawable(android.R.drawable.ic_dialog_info);
            boolean flag;

            @Override
            public void onClick(View view) {
                if(flag){
                    fw.ShowImage(d1);
                }else {
                    fw.ShowImage(d2);
                }
                flag = !flag;
            }
        });
    }


}

这篇关于Android的 - 在ImageView的交叉淡入淡出多发图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆