首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VideoView只有在我旋转屏幕时才起作用

VideoView是Android平台上的一个视图控件,用于播放视频文件。它可以在界面中显示视频内容,并提供了一些常用的视频控制功能,如播放、暂停、停止、快进、快退等。

VideoView只有在旋转屏幕时才起作用的原因可能是由于屏幕旋转导致Activity重新创建,而在Activity重新创建时,需要重新设置VideoView的相关属性和状态才能正常播放视频。

为了解决这个问题,可以在Activity的生命周期方法中保存和恢复VideoView的状态。具体做法如下:

  1. 在Activity的onSaveInstanceState方法中保存VideoView的状态。可以通过调用VideoView的getCurrentPosition方法获取当前播放位置,并将其保存到Bundle对象中。
  2. 在Activity的onCreate方法或onRestoreInstanceState方法中恢复VideoView的状态。可以通过调用Bundle对象的getInt方法获取之前保存的播放位置,并调用VideoView的seekTo方法将播放位置设置为恢复的位置。

另外,为了确保VideoView在旋转屏幕时能够正确工作,还可以考虑以下几点:

  1. 在AndroidManifest.xml文件中为Activity添加配置属性android:configChanges="orientation",以告知系统在屏幕旋转时不重新创建Activity。
  2. 在Activity的onConfigurationChanged方法中处理屏幕旋转事件。可以在该方法中重新设置VideoView的布局参数,以适应新的屏幕方向。

总结起来,要解决VideoView只有在旋转屏幕时才起作用的问题,需要保存和恢复VideoView的状态,并在屏幕旋转时处理相关事件。同时,为了提供更好的用户体验,还可以考虑添加屏幕旋转配置和处理屏幕旋转事件的逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android弹幕功能实现,模仿斗鱼直播的弹幕效果

而现在新书已经完稿,剩下的事情就都是出版社的工作了,那么又可以抽出时间来写写博客了。 记得之前有位朋友的公众号里问过,像直播的那种弹幕功能该如何实现?...弹幕的View必须要做成完全透明的,这样即使覆盖游戏界面的上方也不会影响到游戏的正常观看,只有当有人发弹幕消息,再将消息绘制到弹幕的View上面就可以了。原理示意图如下所示: ?...当然,事先已经SD的根目录中准备了一个叫Pixels.mp4的视频文件。...虽说DanmakuView已经正常工作了,但是屏幕上没有任何弹幕信息的话我们也看不出效果,因此我们还要增加一个添加弹幕消息的功能。...注意我们一开始是将LinearLayout隐藏的,因为不能让这个操作界面一直遮挡着VideoView只有用户想要发弹幕的时候应该将它显示出来。

4.2K90

安卓基础干货(十):安卓多媒体编程的学习

RGB ARGB 32 应用程序启动系统为它创建一个进程,系统为每个进程创建dalvik虚拟机(模拟器设置的VM Heap),当图片的大小大于虚拟机的堆内存空间,就内存溢出(内存泄露);...解决办法:缩放图片加载到内存 步骤: 1、获得设备屏幕的分辨率; 2、得到原图的分辨率; 3、通过比较得到一个合适的比例值; 4、按照比例值缩放图片 5、把图片显示imageview 缩放图片并加载到内存中...解决办法: 缩放图片加载到内存 步骤: 1、获得设备屏幕的分辨率; 2、得到原图的分辨率; 3、通过比较得到一个合适的比例值; 4、按照比例值缩放图片 5、把图片显示imageview...canvas.drawBitmap(srcPic, new Matrix(), paint); iv.setImageBitmap(copyPic); } } 计算机图形处理的API(重点) * 旋转...当界面不可见,双缓冲器占用释放。

1.4K10

Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)

另外,因为Android本身的MediaPlaer和VideoView自身就处理好所以不需要你旋转。...例如根据视频的长宽比和屏幕的长宽比判断,如果视频宽与屏幕宽之比小于高之比,那么就需要按理比压缩宽度,然后高度适应屏幕。  ...例如根据旋转信息,判断TextureView界面的比例是横的还是竖的,如果View是竖的,而视频也是竖的,那么因为旋转了90度,那么让视频的高显示为屏幕的宽度,从新计算旋转后的宽度。...这里需要个关注的是手动点击和自动旋转之间的冲突,主要看代码吧,老婆开始催了 (ノಠ益ಠ)ノ彡┻━┻。...如果横屏全屏的话,恢复到正常画面是最好有一个延时,这样画面不会出现背景抖动的问题,还有最关键的,Maifest文件。

2.8K90

Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)

另外,因为Android本身的MediaPlaer和VideoView自身就处理好所以不需要你旋转。...例如根据视频的长宽比和屏幕的长宽比判断,如果视频宽与屏幕宽之比小于高之比,那么就需要按理比压缩宽度,然后高度适应屏幕。...例如根据旋转信息,判断TextureView界面的比例是横的还是竖的,如果View是竖的,而视频也是竖的,那么因为旋转了90度,那么让视频的高显示为屏幕的宽度,从新计算旋转后的宽度。...这里需要个关注的是手动点击和自动旋转之间的冲突,主要看代码吧,老婆开始催了 (ノಠ益ಠ)ノ彡┻━┻。...6、如果横屏全屏的话,恢复到正常画面是最好有一个延时,这样画面不会出现背景抖动的问题,还有最关键的,Maifest文件。

2.6K30

Android开发之使用VideoView实现视频的横屏播放、去除边框

做项目需要播放一个引导视频,本以为很简单,结果动手发现总有瑕疵,幸好有度娘,现把收获总结如下: 一、实现视频播放: 注明这里要播放的是Android项目中的资源文件,而不是访问SD卡播放视频。...我们需要在布局文件中的VideoView组件外包裹一个布局,这里用的是RelativeLayout,,其他的应该也可以: <RelativeLayout android:layout_width...如何让视频播放就自动转到横屏播放呢?...三、设置视频横屏播放: 每个Activity是否允许转屏,当前显示方式是横屏还是竖屏,都可以通过AndroidManifest.xml文件中设置: 比如我当前播放视频Splash这个activity...中播放,就可以在她的标签中添加screenOrientation属性控制屏幕方向(landscape是横向,portrait是纵向): <activity android:name

1.3K20

android视频系列:视频解码篇--android上视频播放的实现

视频文件,只有播放出来,显示出了意义;只有播放出来,暴露出各种问题。先理解播放的场景,才能更好地理解视频处理所选取的策略。...播放器做了什么 播放器播放视频,就是一步步剖开视频的内容,显示屏幕上。 最简单的理解方式,是把视频文件看做一个容纳了很多图片的容器。...播放,从容器里取出一张图片,放到屏幕上显示,隔一点间后,再从容器里取出下一张图,放到屏幕上。按次序把图片一张一张显示到屏幕上,等到最后一张也显示到屏幕上后,播放就完成了。...Android播放视频 下面我们介绍3种Android上播放视频的方法。 1. 使用VideoView播放视频 ?...VideoView把解码和显示工作全部都封装起来,简单地设置视频路径,就可以进行播放了。 显示方面,它就是一个View,可以代码里创建,也可以layout xml里直接定义。

3.8K131

Android 拍摄(横竖屏)视频的懒人之路

如果是不充满屏幕高度的,就通过屏幕宽度比例算出surface的高度;如果充满屏幕高度,就算出surface的宽度。...如此以来,不变形啦,点击录制的瞬间也不跳动啦,唯一有点小问题的就是充满高度的时候,画面是超过了屏幕宽度的一点的,所以可能录到了什么不想录制的♂,但是刚好没看到︿( ̄︶ ̄)︿。...我们是画面旋转的时候把对应的logo用属性动画也旋转了,然后得到当前的旋转角度,告诉MediaRecorder,拍摄出来的视频元信息里就带有了角度信息,播放的时候画面会就旋转为横屏或者竖屏啦。...(砸手机)最后解决的是配置的时候标志类型,设置好MediaRecorder之后拍摄开始闪光灯。...此处还需要注意,如果应用没有获取到录音权限,录制的时候是会走catch里面的。 停止录制相对就简单了,只要顺序正常即可,之后就可以把视频传到VideoView快速实现预览啦。

1.9K30

Android开发笔记(一百二十五)自定义视频播放器

但是不积跬步无以至千里,如果我们要定制一个好用好看的播放器,还是得先把笨拙的VideoView与MediaController搞清楚行。...当该方法返回值与getDuration相等,表示播放到了末尾。 isPlaying : 判断是否播放。 getBufferPercentage : 获得已缓冲的比例。...返回值0到1之间。 MediaController VideoView看起来只有光秃秃的视频画面,要想让用户与它进行交互,还得通过MediaController来中转控制操作。...如果只是修改代码,其实还不能完全实现自动全屏的功能,主要问题如下: 1、屏幕顶部的系统状态栏依然留在屏幕顶端; 2、App自身的导航栏也仍旧没有隐藏; 3、视频播放途中,如果手机屏幕发生切换,例如从竖屏变为横屏...而属性configChanges的意思是屏幕切换不用重启Activity,只需调用onConfigurationChanged方法来重新设定显示方式,所以给该属性指定若干事件,就可以避免重启Activity

2.6K40

Android开发中的重力传感器用法实例详解

接下来看一个Android用重力传感器做横竖屏切换的例子 播放视频的时候,可能要做横竖屏的切换,但是,用户可以设置自己的手机关掉屏幕旋转,这个时候就需要想其他的办法了,比如:重力传感器。...} private ScreenSwitchUtils(Context context) { Log.d(TAG, init orientation listener.); // 注册重力感应器,监听屏幕旋转...trust the angle if the magnitude is small compared to the y // value if (magnitude * 4 = Z * Z) { // 屏幕旋转...trust the angle if the magnitude is small compared to the y // value if (magnitude * 4 = Z * Z) { // 屏幕旋转...LayoutParams params1 = new RelativeLayout.LayoutParams(screenWidth, DensityUtil.dip2px(this, 160)); videoView.setLayoutParams

2.1K20

TRTC 视频旋转场景方案

效果演示 当左边手机进行旋转,即进行横屏推流,右边手机的小画面订阅到的远端流,动态调整view进行适配,避免出现黑边; 当两端手机都进行旋转,两端都进行横屏推流,各自订阅的远端流画面进行动态调整.../** * 指定旋转角度,是否已经操作了,避免连续同一个旋转角度操作多次 * @param mOrientation 0、90、180、270度 * @return true: 之前一次已经操作过了...就设置横屏的编码参数 * 2)发送 SEI 消息 * 1.1)如果当前是横屏推流,就告诉房间内其他人,当前推横屏 * 1.1.1)房间内其他用户收到后,调整对应用户的 view...的宽高比,避免出现黑边 * 1.2)如果当前是竖屏推流,就告诉房间内其他人,当前推竖屏 * 1.1.1)房间内其他用户收到后,调整对应用户的 view 的宽高比,避免出现黑边...* 3)旋转远端用户的画面 * 3.1)当前拉取到了其他人的流,当前切换成 横屏/竖屏 ,需要旋转远端用户的画面,避免方向不一致 * 4)设置当前 activity 横屏 或 竖屏

1.6K60

Android中的Matrix(矩阵)

中,使用一个3×1的矩阵来表示一个点: x,y分别代表x,y轴上的坐标,而1代表屏幕z轴上的坐标为默认的。...: Matrix的组合 应用矩阵进行图形变换的主要原因,是因为矩阵是可以通过矩阵的乘法进行组合使用的,如果想对canvas绘制的bitmap,先平移T(dx, dy),再旋转R(θ),最后缩放S...Matrix的坐标系 矩阵的操作可以看作是以坐标原点为原点的坐标系在三维空间中做的变换,不同于canvas的屏幕坐标系坐标系,矩阵Matrix的坐标系为左手坐标系: 这个坐标系对应的每个轴的旋转方向(...从原点看出去,每个轴的旋转方向都是逆时针): Matrix的操作可以看做是对上面左手坐标系的变换 因为Matrix变换后是对每个canvas的点起作用,其实也可以看做对这个三维坐标系起了作用,canvas...比如:图形变换是以左边原点为原点的,所以旋转、缩放等功能应用到canvas.drawBitmap()方法(因为bitmap常从原点往右下方画),图像表现出来的结果就特别奇怪,需要将canvas的坐标系移动到图像的中心点再操作然后再把坐标系移回去

1.6K10

什么C3转换还可以这样玩???用CSS3实现2D转换、3D转换、3D呈现,详细总结及案例演示。

语法: transform: rotate(旋转度数); rotate里面写旋转的度数,单位是deg(度),例如rotate(90deg); 当旋转角度为正值旋转方向为顺时针旋转;当旋转角度为负值...默认的旋转中心点元素的中心点 如下代码的效果为:当鼠标悬停在图片上,图片会顺时针旋转360°,为了更具有动画效果,添加了过渡效果。...当然没有,你想,我们3d世界中都有一种直观感受近大远小,那么我们既然是3d移动,那肯定要有这种感觉行啊,因此,我们引入了一个概念,叫透视-perspective。...透视我们也称为视距 :视距就是人的眼睛到屏幕的距离 透视的单位是像素 透视写在被观察元素的父盒子上面的 还是上面的例子,现在给div的父元素加上透视,因为body里面只有div,所以div的父元素就是...【3D呈现(transfrom-style)】 有时我们使用多个对象进行旋转的时候,发现一个奇怪的现象,明明设置了旋转,但旋转的时候,子元素的旋转属性却消失了,不起作用,这是应为我们没有设置3D呈现(transfrom-style

77530

Android视频悬浮窗口实现的示例代码

实现 首先,需要添加相对应悬浮窗权限: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" / Activity...} else { return false; } } return false; } 获取权限后,我们可以首先初始化我们要显示的视图,并且设置相对应的事件,这里我们采用了 VideoView...videoView = view.findViewById(R.id.video_view); //视频内容设置 videoView.setVideoPath("https://stream7....方法设置悬浮窗口的参数,进行窗口视图位置更新: private class FloatViewMoveListener implements View.OnTouchListener { //开始触控的坐标,移动的坐标...(相对于屏幕左上角的坐标) private int mTouchStartX; private int mTouchStartY; //开始的坐标和结束的坐标(相对于自身控件的坐标)

1.9K30

基于VideoView自定义控制面板的视频播放器

本文实例为大家分享了VideoView原生自定义视频播放器的具体代码,供大家参考,具体内容如下 项目用到的技术点和亮点 VideoView封装视频播放工具类 自定义视频控制面板 手势识别器的使用 1....VideoView封装视频播放工具类 视频播放这些其实都挺简单的,VideoView这个类都提供了相应方法,详细见代码 代码都比较简单,不过需要注意的是要在主线程中更新视频面板的UI信息。...e) //一次点击up事件 boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) //屏幕上拖动事件...暂停或者开始播放 videoBusiness.playVideo(id_btn_video_play,id_iv_video_play); isShow = false; return true; } } //屏幕上拖动事件...,避免屏幕上操作切换混乱 // 横向的距离变化大则调整进度,纵向的变化大则调整音量 Log.e("xxxxxxx",e1.getX()+""); Log.e("yyyyyyy",e1.getY()+"

2.1K20

iOS6中横屏的处理方法 原

现在我们来看决定屏幕方向的几个函数: IOS6之前,我们只需通过一个函数 - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation...之后被标记为过时的 我们通过下面两个方法来代替: //是否允许屏幕旋转 -(BOOL)shouldAutorotate{     return YES; } //支持的方向 - (NSUInteger...注意: 如果你们项目中的RootViewController是导航,你会发现,你Push出来的视图中添加刚才的代码并没有起作用,原因是导航,并没有进行设置,我们创建一个文件,继承于NavigationController...我们想自由的控制每个push出来的界面的屏幕方向,可以导航里这么做: -(BOOL)shouldAutorotate{     return [self.topViewController shouldAutorotate...如果我们大多是的视图控制器都是一个方向的,只有偶尔的几个会不同,这时候,我们其实可以采取presentationController的方式,然后直接在弹出的控制器中写那两个方法即可。

1.1K60
领券