how to implemenent android video player in full screen

匿名 (未验证) 提交于 2019-12-03 03:12:02

问题:

i have implemented android video player , but i don't need like this how i need mean when opening activity i need to pay video half screen in center when i click button full screen button then i need t pay in full screen , how to implement it help me....

VideoPlayerActivity

public class VideoPlayerActivity extends Activity implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, VideoControllerView.MediaPlayerControl {      SurfaceView videoSurface;     MediaPlayer player;     VideoControllerView controller;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_video_player);          videoSurface = (SurfaceView) findViewById(R.id.videoSurface);         SurfaceHolder videoHolder = videoSurface.getHolder();         videoHolder.addCallback(this);          player = new MediaPlayer();         controller = new VideoControllerView(this);          try {             player.setAudioStreamType(AudioManager.STREAM_MUSIC);             player.setDataSource(this, Uri.parse("http:/myipadree/sites/default/files/759226_639541239394676_1125470178_n.mp4"));             player.setOnPreparedListener(this);         } catch (IllegalArgumentException e) {             e.printStackTrace();         } catch (SecurityException e) {             e.printStackTrace();         } catch (IllegalStateException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         }     }      @Override     public boolean onTouchEvent(MotionEvent event) {         controller.show();         return false;     }      // Implement SurfaceHolder.Callback     @Override     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {      }      @Override     public void surfaceCreated(SurfaceHolder holder) {         player.setDisplay(holder);         player.prepareAsync();     }      @Override     public void surfaceDestroyed(SurfaceHolder holder) {      }     // End SurfaceHolder.Callback      // Implement MediaPlayer.OnPreparedListener     @Override     public void onPrepared(MediaPlayer mp) {         controller.setMediaPlayer(this);         controller.setAnchorView((FrameLayout) findViewById(R.id.videoSurfaceContainer));         player.start();     }     // End MediaPlayer.OnPreparedListener      // Implement VideoMediaController.MediaPlayerControl     @Override     public boolean canPause() {         return true;     }      @Override     public boolean canSeekBackward() {         return true;     }      @Override     public boolean canSeekForward() {         return true;     }      @Override     public int getBufferPercentage() {         return 0;     }      @Override     public int getCurrentPosition() {         return player.getCurrentPosition();     }      @Override     public int getDuration() {         return player.getDuration();     }      @Override     public boolean isPlaying() {         return player.isPlaying();     }      @Override     public void pause() {         player.pause();     }      @Override     public void seekTo(int i) {         player.seekTo(i);     }      @Override     public void start() {         player.start();     }      @Override     public boolean isFullScreen() {         return false;     }      @Override     public void toggleFullScreen() {      }     // End VideoMediaController.MediaPlayer 

it is working perfect but it opening full screen if i modify layout file width and height then how to implement full screen and button full screen button

回答1:

This is demo custom media control, but full screen and small screen no code. http://www.brightec.co.uk/blog/custom-android-media-controller I'm create method setFullScreen. Code below working for me.

private boolean mFullScreen = true;  @Override public boolean isFullScreen() {        if(mFullScreen){             Log.v("FullScreen", "--set icon full screen--");         return false;     }else{         Log.v("FullScreen", "--set icon small full screen--");         return true;     }    } @Override public void toggleFullScreen() {     Log.v("FullScreen", "-----------------click toggleFullScreen-----------");     setFullScreen(isFullScreen());  } // End VideoMediaController.MediaPlayerControl  public void setFullScreen(boolean fullScreen){     fullScreen = false;      if (mFullScreen)      {         Log.v("FullScreen", "-----------Set full screen SCREEN_ORIENTATION_LANDSCAPE------------");          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);          DisplayMetrics displaymetrics = new DisplayMetrics();           getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);           int height = displaymetrics.heightPixels;           int width = displaymetrics.widthPixels;           android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams();           params.width = width;           params.height=height;           params.setMargins(0, 0, 0, 0);           //set icon is full screen          mFullScreen = fullScreen;     }     else{         Log.v("FullScreen", "-----------Set small screen SCREEN_ORIENTATION_PORTRAIT------------");                      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);               DisplayMetrics displaymetrics = new DisplayMetrics();           getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);           final FrameLayout mFrame = (FrameLayout) findViewById(R.id.videoSurfaceContainer);          // int height = displaymetrics.heightPixels;           int height = mFrame.getHeight();//get height Frame Container video           int width = displaymetrics.widthPixels;           android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams();           params.width = width;           params.height= height;           params.setMargins(0, 0, 0, 0);           //set icon is small screen           mFullScreen = !fullScreen;     } } 

or use onConfigurationChanged for Rotation screen.

*@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);    // Checks the orientation of the screen   if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();    // setContentView(R.layout.view_lang);       DisplayMetrics displaymetrics = new DisplayMetrics();       getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);       int height = displaymetrics.heightPixels;       int width = displaymetrics.widthPixels;       android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams();       params.width = width;       params.height=height;// -80 for android controls       params.setMargins(0, 0, 0, 0);   } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();     //setContentView(R.layout.view);         DisplayMetrics displaymetrics = new DisplayMetrics();       getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);       int height = displaymetrics.heightPixels;       int width = displaymetrics.widthPixels;       android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams();       params.width = width;       params.height=height / 3;       params.setMargins(0, 0, 0, 0);   } } 

add code here in AndroidManifest.xml

 android:configChanges="orientation|keyboard|keyboardHidden|screenSize"  

Sorry English !



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!