Android视图可见性更改导致屏幕闪烁

时间:2013-04-18 18:18:10

标签: android

我目前有一个布局,在播放视频结束时,将全屏图像视图的可见性更改为VISIBLE。每当发生这种情况时,屏幕会略微闪烁。有办法防止这种情况吗?

public class VideoTestFlip extends SherlockActivity implements OnCompletionListener
{
ImageView surprise;
VideoView video;
ViewFlipper viewFlipper;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.video_splash);
    video = (VideoView) findViewById(R.id.videoView);
    viewFlipper = (ViewFlipper)findViewById(R.id.viewflipper);
    Animation in = AnimationUtils.loadAnimation(this, R.anim.slide_down);
    Animation out = AnimationUtils.loadAnimation(this, R.anim.slide_up);

    viewFlipper.setInAnimation(in);
    viewFlipper.setOutAnimation(out);
    surprise = (ImageView)findViewById(R.id.surprise);
    video.setVideoPath("android.resource://com.mezzolab.danariely/raw/" + R.raw.splash_low_5);

 video.start();
    video.setOnCompletionListener(this);
}

@Override
public void onCompletion(MediaPlayer mp)
{

    surprise.setVisibility(View.VISIBLE);

    viewFlipper.showNext();
}

2 个答案:

答案 0 :(得分:3)

我无法看到您的代码,但很多时候这是因为您的事件序列已关闭。 Check this out

编辑: 现在您的代码已启动:您所做的似乎不应该有任何闪烁行为。我唯一能想到的就是尝试将它设置为异步可见。做一个处理程序:

private class ViewHandler extends Handler {
  @Override
  public void handleMessage(Message msg) {
    surprise.setVisibility(View.VISIBLE);
  }
}

然后通过调用处理程序调用它来生成ImageView View.VISIBLE

mHandler.sendMessage(Message.obtain(mHandler, 0));

答案 1 :(得分:0)

您可以使用动画来避免这种闪烁。