android关于VideoView或Vitamio视频播放器横竖屏切换
来源:互联网 发布:网络配音社团 编辑:程序博客网 时间:2024/05/08 04:53
之前在网上寻求帮助时,留有QQ,好多人加我问过这个问题,现在为了方便大家,我将android关于VideoView或Vitamio视频播放器横竖屏切换的代码放在这里需要的朋友可以看一下,当然我做的这个也是从网上得来的,然后稍作修改,当然我做的这个也有很多问题,希望大家指点(这个demo只是videoview,导入vitamio也是可以的)。
代码如下:
1.androidManifest.xml里面设置
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.helloworld.android.videoplayer" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar" > <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"></uses-permission></manifest>
2.布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" android:padding="0dp" tools:context=".MainActivity"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/idshowed" android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <VideoView android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height="250dip" android:layout_centerInParent="true" /> </RelativeLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_margin="0dip" android:layout_weight="1" android:gravity="right" android:orientation="horizontal"> <ImageView android:id="@+id/fullornormalscreen" android:layout_width="50dip" android:layout_height="50dip" android:layout_gravity="right" android:layout_marginBottom="0dp" android:layout_marginRight="0dp" android:background="#f0000000" android:textColor="#ffffff" /> </LinearLayout> </FrameLayout></LinearLayout>
3.MainActivity里面 的代码
public class MainActivity extends Activity { private ImageView fullornormalscreen; private boolean fullscreen = false; private VideoView mVideoView; private static int vWidth; private static int vHeight; private boolean displayScreen; private LinearLayout idshowed; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); displayScreen = true; mVideoView = (VideoView) findViewById(R.id.videoView); // Uri uri = Uri.parse("http://wslive-hls.kascend.com/chushou_live/545f32f8dccf4e85b49875418d42d33c/playlist.m3u8"); mVideoView.setVideoPath("http://video19.ifeng.com/video09/2016/07/17/4144324-102-008-1057.mp4"); //mVideoView.setVideoPath("http://cache.m.iqiyi.com/dc/dt/text/7565bc03x2f443409x777a6178/20161111/e2/73/8a155c81ea5663e5c925f93e1dcdd49b.m3u8?np_tag=nginx_part_tag&qd_sc=ce230a3dccc84e298cd146af45445d0d&t_sign=-0-02020031010000000000-566766500_04000000001000000000_1"); mVideoView.start(); MediaController mediaController; mediaController = new MediaController(this); mediaController.setVisibility(View.GONE); mVideoView.setMediaController(mediaController); idshowed = (LinearLayout)this.findViewById(R.id.idshowed); fullornormalscreen = (ImageView) findViewById(R.id.fullornormalscreen); fullornormalscreen.setImageDrawable(getResources().getDrawable(R.drawable.icon_full)); fullornormalscreen.setOnClickListener(new Button.OnClickListener(){ public void onClick(View view){ String path = ""; new MyClickTask().execute(path); } }); idshowed.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(displayScreen){ fullornormalscreen.setVisibility(View.INVISIBLE); displayScreen = false; }else{ fullornormalscreen.setVisibility(View.VISIBLE); displayScreen = true; } System.out.println("---------------------Show--Hide---------------"); } }); } public class MyClickTask extends AsyncTask<String,Integer,String> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } @Override protected String doInBackground(String... params) { String path = params[0]; String title; if (!fullscreen) {//设置RelativeLayout的全屏模式 // System.out.println("-----linearLayout_player_nba----false------->>:1" ); MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); System.out.println("-----------------asyncTask--------->:1"); title = "窗口"; // LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)linearLayout_player_nba.getLayoutParams(); fullscreen = true;//改变全屏/窗口的标记 } else {//设置RelativeLayout的窗口模式 MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); System.out.println("-----------------asyncTask--------->:2"); title = "全屏"; fullscreen = false;//改变全屏/窗口的标记 } return title; } protected void onPostExecute(String result) { super.onPostExecute(result); if(result == "窗口") fullornormalscreen.setImageDrawable(getResources().getDrawable(R.drawable.icon_normal)); else fullornormalscreen.setImageDrawable(getResources().getDrawable(R.drawable.icon_full)); } } public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // 检测屏幕的方向:纵向或横向 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { //当前为横屏, 在此处添加额外的处理代码 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);//消除状态栏 System.out.println("-----------------onConfigurationChanged--------->:1"); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; vWidth = width; ViewGroup.LayoutParams lp = mVideoView.getLayoutParams(); lp.width = width; lp.height = height; mVideoView.setLayoutParams(lp); // getWindow().getDecorView().setSystemUiVisibility(View.INVISIBLE);//显示状态栏 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { //当前为竖屏, 在此处添加额外的处理代码 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); System.out.println("-----------------onConfigurationChanged--------->:2"); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; vWidth = width; ViewGroup.LayoutParams lp = mVideoView.getLayoutParams(); lp.width = width; lp.height = (int) (height * (1 - 0.618)); mVideoView.setLayoutParams(lp); getWindow().getDecorView().setSystemUiVisibility(View.VISIBLE);//显示状态栏 } //检测实体键盘的状态:推出或者合上 if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { //实体键盘处于推出状态,在此处添加额外的处理代码 } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { //实体键盘处于合上状态,在此处添加额外的处理代码 } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
最后布局里面用到两张图片
0 0
- android关于VideoView或Vitamio视频播放器横竖屏切换
- Android横竖屏切换继续播放视频
- Android视频播放和横竖屏切换
- android surfaceview自定义视频播放器横竖屏切换总结
- Android视频播放器横竖屏自动切换
- Android使用VideoView和MediaController播放网络视频(包括横竖排切换的处理)
- android使用Vitamio实现视频播放大小屏流畅切换
- android 开发视频播放器API----Vitamio API for Android: VideoView
- 利用VideoView简单实现视频播放 包括 横竖屏切换 声音 亮度 暂停
- 解决Android视频播放横竖屏切换播放问题!
- android 横竖屏切换属性和播放视频全屏切换
- android 横竖屏切换属性和播放视频全屏切换
- android 横竖屏切换属性和播放视频全屏切换
- videoview 横竖屏切换
- Android vitamio视频播放器
- Android VideoView 自定义播放器 MediaController 实现视频播放控制和横竖屏适配
- 关于视频播放横竖屏切换不再重复oncreat函数
- Android 视频播放器VideoView
- 欢迎使用CSDN-markdown编辑器
- 使用systool来查看HCA信息
- dubbo通信协议之对比
- FPS
- django中models field详解
- android关于VideoView或Vitamio视频播放器横竖屏切换
- Chisel介绍
- Activity和Fragment回调研究
- 第十一节:元组 Tuple3
- numpy 数组操作
- 欢迎使用CSDN-markdown编辑器
- web.xml文件的作用及基本配置
- 减产成果全泡汤 国际油价创出近半年新低
- 第二个小demo