Activity flashes/blink 换帧时
Activity flashes/blink when changing frames
我有一个 viewpager,它工作得很好,但是当我把它添加到监听器时
OnPageSelected()
mViewBottomBar.setVisibility(View.GONE);闪烁,mViewBottomBar是viewpager外的actvitiy布局的视图,这两个在相对布局内。
它闪烁是因为 View.GONE 将底栏的宽度和高度设置为 0。UI 之后需要更新,这就是您看到闪烁屏幕的原因。要解决此问题,请使用动画来隐藏底部栏并在动画结束时调用 View.GONE,这将允许平滑过渡而不会闪烁。
示例:
TranslateAnimation animation = new TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0,
TranslateAnimation.ABSOLUTE, 0,
TranslateAnimation.ABSOLUTE, 0,
TranslateAnimation.ABSOLUTE, 100);
animation.setDuration(200);
animation.setFillAfter(true);
animation.setAnimationListener(new Animation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation)
{
}
@Override
public void onAnimationEnd(Animation animation)
{
mViewBottomBar.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation)
{
}
});
mViewBottomBar.startAnimation(animation);
我有一个 viewpager,它工作得很好,但是当我把它添加到监听器时 OnPageSelected() mViewBottomBar.setVisibility(View.GONE);闪烁,mViewBottomBar是viewpager外的actvitiy布局的视图,这两个在相对布局内。
它闪烁是因为 View.GONE 将底栏的宽度和高度设置为 0。UI 之后需要更新,这就是您看到闪烁屏幕的原因。要解决此问题,请使用动画来隐藏底部栏并在动画结束时调用 View.GONE,这将允许平滑过渡而不会闪烁。
示例:
TranslateAnimation animation = new TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0,
TranslateAnimation.ABSOLUTE, 0,
TranslateAnimation.ABSOLUTE, 0,
TranslateAnimation.ABSOLUTE, 100);
animation.setDuration(200);
animation.setFillAfter(true);
animation.setAnimationListener(new Animation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation)
{
}
@Override
public void onAnimationEnd(Animation animation)
{
mViewBottomBar.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation)
{
}
});
mViewBottomBar.startAnimation(animation);