Android中视频播放时出现黑屏

Android中视频播放时出现黑屏,android,animation,android-layout,media-player,layer,Android,Animation,Android Layout,Media Player,Layer,我正在用android媒体播放器播放一段视频&同时在视频顶部使用另一层显示动画。(视频文件位于SD卡上。) 动画基本上是与视频同步的裁剪图像(TranslateAnimation) 每当我点击按钮播放视频时,我都会感受到一个黑屏,中间是裁剪过的图像,然后视频和动画都会开始。我想通过先加载视频,然后将图像放在顶部来避免这种情况 我怎样才能做到这一点?还是有更好的办法 以下是相关的代码片段: public void onCreate(Bundle savedInstanceState) {

我正在用android媒体播放器播放一段视频&同时在视频顶部使用另一层显示动画。(视频文件位于SD卡上。)

动画基本上是与视频同步的裁剪图像(TranslateAnimation

每当我点击按钮播放视频时,我都会感受到一个黑屏,中间是裁剪过的图像,然后视频和动画都会开始。我想通过先加载视频,然后将图像放在顶部来避免这种情况

我怎样才能做到这一点?还是有更好的办法

以下是相关的代码片段:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videolayer);
        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
        try{
            Intent myint = this.getIntent();
            photoPath = myint.getStringExtra("photo_path");
            large_bitmap_path = myint.getStringExtra("large_bitmap_path");
            bitmap_path = myint.getStringExtra("bitmap_path");

            imv1 = (ImageView)findViewById(R.id.imv1);            
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
            bitmap = BitmapFactory.decodeFile(photoPath, options);
            imv1.setImageBitmap(bitmap);
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            videoView = (VideoView) findViewById(R.id.VideoView);

            File f=new File(Environment.getExternalStorageDirectory(), "videos/"+Videoid[GalleryVideo.galleryVideoCounter]+".m4v");
            Uri video = Uri.parse(f.getAbsolutePath());            

            videoView.setVideoURI(video);
            videoView.setOnPreparedListener(this);
            videoView.setOnCompletionListener(video_listener);
            videoView.start();            
            lower = (View)findViewById(R.id.lower);
            middle = (View)findViewById(R.id.middle);
            upper = (View)findViewById(R.id.upper);
            upper.setVisibility(4);

            .......
            RelativeLayout ll = (RelativeLayout) findViewById(R.id.LinearLayout01);
            ll.setOnTouchListener(video_tap);
            startTime = System.currentTimeMillis();


        } catch(Exception e){
            e.printStackTrace();
        }
    }

.................

@Override
    public void onPrepared(MediaPlayer mp) {
        // TODO Auto-generated method stub
        videoHeight = videoView.getMeasuredHeight();
        videoWidth = videoView.getMeasuredWidth();
        displayWidth = getApplicationContext().getResources().getDisplayMetrics().widthPixels;
        displayHeight = getApplicationContext().getResources().getDisplayMetrics().heightPixels;
        //video is ready for play, now start animation
        anim_start = 1;
        launchAnimation();            
    }

    private Runnable resumeAnim =new Runnable() {
        public void run() {
            launchAnimation();
        }
    };

您应该使用线程来播放视频并使用处理程序显示图像,或者您可以使用AsyncTask来解决黑屏问题。我也遇到了同样的问题,不再使用线程和处理程序