最近客户提出,视频画面显示时黑屏体验不好,要求显示背景图。等视频画面来了再显示。
这个问题是怎么引起的?就在于安卓的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(); } }); }