我用videoview做播放视频,我怎么实现全屏播放啊,我用了网上的方法,都不行,画面两边还是有黑屏的,我想要无论视频的分辨率是多少,它都画面全屏播放

解决方案 »

  1.   

    用MediaPlayer  我给你源码。
    package com.gushi;import java.io.FileDescriptor;
    import android.app.Activity;
    import android.content.Intent;
    import android.content.res.AssetFileDescriptor;
    import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.media.MediaPlayer.OnBufferingUpdateListener;
    import android.media.MediaPlayer.OnCompletionListener;
    import android.media.MediaPlayer.OnPreparedListener;
    import android.os.Bundle;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;public class app_1 extends Activity implements SurfaceHolder.Callback,
    OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener{
    private SurfaceView surfaceView;
    private SurfaceHolder surfaceHolder;
    private MediaPlayer mediaPlayer;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.surfaceView = new SurfaceView(this);
    this.surfaceHolder = this.surfaceView.getHolder();
    this.surfaceHolder.addCallback(this);
    //类型必须设置成SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS
    this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    setContentView(this.surfaceView);
    }
    @Override
    public void onDestroy() {
    super.onDestroy();
    if (this.mediaPlayer != null) {
    this.mediaPlayer.release();
    this.mediaPlayer = null;
    }
    }
    public void PlayVideo(){
    try {
    //视频文件放在 assert中
    Intent it = this.getIntent();        
    Bundle bundle = it.getExtras();    
    String gsString= bundle.getString("gs");  //gsString是视频名字AssetFileDescriptor aFD = this.getAssets().openFd(gsString);
    FileDescriptor fileDescriptor = aFD.getFileDescriptor();
    this.mediaPlayer = new MediaPlayer();
    this.mediaPlayer.setDataSource(fileDescriptor, aFD.getStartOffset(), aFD.getLength());
    aFD.close();
    //视频放在SDCard中
    //File sdFile = Environment.getExternalStorageDirectory();
    //this.mediaPlayer = new MediaPlayer();
    //this.mediaPlayer.setDataSource(sdFile.getAbsoluteFile() + File.separator + "welcome.3gp");
    //视频放在res中
    //this.mediaPlayer = MediaPlayer.create(this, R.raw.welcome);
    //网上的视频,没有测试
    //this.mediaPlayer
    // .setDataSource("http://xy2.163.com/download/down/wukong.mp3");
    this.mediaPlayer.setDisplay(this.surfaceHolder);
    this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    //准备完成后才可以播放,另外如果文件特别大或者从网上获得的资源
    //会在这里等待时间过长,造成堵塞,这样的话就得用
    //this.mediaPlayer.prepareAsync(),然后监听是否准备完毕在开始
    this.mediaPlayer.prepare();
    this.mediaPlayer.start();
    } catch (Exception e) {
    // TODO: handle exception
    }
    }
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
    int height) {
    }
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
    //SurfaceCreated 创建成功才可以播放视频
    PlayVideo();
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    }
    //@Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
    // TODO Auto-generated method stub
    }
    //@Override
    public void onCompletion(MediaPlayer mp) {
    // TODO Auto-generated method stub
    }
    //@Override
    public void onPrepared(MediaPlayer mp) {
    //MediaPlayer加载准备完毕才能开始播放
    //mp.start();
    }
    }
      

  2.   

    to KPRF2009
    你好,你这代码也不行啊,这样应该只是按视频原大小进行全屏吧,我横屏时两边还是有黑屏的地方啊