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