天天看点

安卓显示视频画面的动画效果及代码

最近客户提出,视频画面显示时黑屏体验不好,要求显示背景图。等视频画面来了再显示。

 这个问题是怎么引起的?就在于安卓的View,设置了背景之后,就无法再显示视频画面(实际上肯定有绘制视频画面,UI流程上使得背景图一直显示)。

 怎么办?

 先设置背景。  

 监听画面到达。

 到达之后,去掉背景。

 功能是实现了,体验不好。一个是多少总有黑屏,另外一个是画面太突然,体验差。

 怎么办?上动画吧。

 在前景加一个View,设置背景,挡住视频画面。

 等画面到达,开始动画,由不透明到全透明的渐变。

 效果很好。

 代码:

public void startAlphaAnimation()
{
    mRoomBgView.setVisibility(View.VISIBLE);
    //由不透明到全透明。
    final AlphaAnimation alphaAnimation = new AlphaAnimation(1.0F, 0.0F);
    //设置动画持续时长
    alphaAnimation.setDuration(1000);
    //true,动画结束后,保持动画结束时的最终状态
    alphaAnimation.setFillAfter(true);
    //true,动画结束后,保持动画开始时的状态
    alphaAnimation.setFillBefore(false);
    //设置动画播放次数,如果只播放一次,设置为0
    alphaAnimation.setRepeatCount(0);
    //开始动画
    mRoomBgView.startAnimation(alphaAnimation);
 
    //设置一个,结束时一般要做点事情。
    alphaAnimation.setAnimationListener(new Animation.AnimationListener()
    {
        @Override
        public void onAnimationStart(Animation animation)
        {
        }
 
        @Override
        public void onAnimationRepeat(Animation animation)
        {
        }
 
        @Override
        public void onAnimationEnd(Animation animation)
        {
            mRoomBgView.setVisibility(View.GONE);
            mRoomBgView.clearAnimation();
            alphaAnimation.cancel();
        }
    });
}      

继续阅读