我目前有一个布局,在播放视频结束时,将全屏图像视图的可见性更改为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();
}
答案 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)
您可以使用动画来避免这种闪烁。