在已知控件ID的情况下我们可以设置上下左右的移动控件, android:nextFocusUp="@id/tv_test" android:nextFocusDown="@id/tv_test...--自定义的VideoView 做了绘制改变,和网络地址许可--> <com.llw.androidtvdemo.view.MyVideoView android...--视频结束时 显示黑色背景--> <RelativeLayout android:visibility="gone" android:id="@+id/lay_finish_bg...--视频播放中 控制暂停和播放的按钮--> <ImageButton android:visibility="gone" android:focusable="true...--视频结束时 显示重播图标--> <ImageButton android:visibility="gone" android:layout_centerInParent
而现在新书已经完稿,剩下的事情就都是出版社的工作了,那么我又可以抽出时间来写写博客了。 记得之前有位朋友在我的公众号里问过我,像直播的那种弹幕功能该如何实现?...其实并不复杂,我们只需要首先在布局中放置一个显示游戏界面的View,然后在游戏界面的上方再覆盖一个显示弹幕的View就可以了。...最后,我们在AndroidManifest.xml中将Activity设置为横屏显示并加入权限声明,如下所示: <manifest xmlns:android="http://schemas.android.com...虽说DanmakuView已经在正常工作了,但是屏幕上没有任何弹幕信息的话我们也看不出效果,因此我们还要增加一个添加弹幕消息的功能。...然后进行判断,如果操作界面是隐藏的就将它显示出来,如果操作界面是显示的就将它隐藏掉,这样就可以简单地通过点击屏幕来实现操作界面的隐藏和显示了。
public class PlayerManager { /** * 可能会剪裁,保持原视频的大小,显示在中心,当原视频的大小超过view的大小超过部分裁剪处理 */ public static final...,如果视频大于view,则按比例缩视频直到完全显示在view中 */ public static final String SCALETYPE_WRAPCONTENT="wrapContent"; /*...:9,并完全显示在View中 */ public static final String SCALETYPE_16_9="16:9"; /** * 不剪裁,非等比例拉伸画面到4:3,并完全显示在View...,如果视频大于view,则按比例缩视频直到完全显示在view中 * fitXY:不剪裁,非等比例拉伸画面填满整个View * 16:9:不剪裁,非等比例拉伸画面到16:9,并完全显示在View中...* 4:3:不剪裁,非等比例拉伸画面到4:3,并完全显示在View中 * </pre * @param scaleType */ public void setScaleType(String
<VideoView android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height...(this); //设置videoview的控制条 videoView.setMediaController(mediaController); //设置显示控制条 mediaController.show...public void onCompletion(MediaPlayer mp) { } }); //设置发生错误监听,如果不设置videoview会向用户提示发生错误 videoView.setOnErrorListener...) { @Override public boolean onError(MediaPlayer mp, int what, int extra) { return false; } }); //设置在视频文件在加载完毕以后的回调函数...(uri); //设置为全屏模式播放 setVideoViewLayoutParams(2); } /** * 设置videiview的全屏和窗口模式 * * @param paramsType 标识
写在前面 在Android设备中,播放视频和音乐是非常普遍的。Android框架提供了一个对于媒体的操作的最省代码的解决方案:MediaPlayer。...ExoPlayerView是在实际工作中的产物,可能并无法完全满足各位的实际工作中的要求,但可以借鉴下。...在布局文件中引入 ExoVideoView: <com.jarvanmo.exoplayerview.ui.ExoVideoView android:id="@+id/videoView...); 注意:不要忘记释放ExoPlayer: videoView.releaseSelfPlayer(); 可以通过如下方式为视频设置一个显示名称: mediaSource.setDisplayName...Others 你也可以在横屏的时候加入一个自定义布局: videoView.addViewToControllerWhenLandscape(view); 你添加的布局将被加入FrameLayout
如果你看过我的《android音乐播放简单实现(MediaPlayer)》,那么本篇将会毫无压力。 首先是主界面的三个按钮和一个播放控件 <?...</LinearLayout 在 MainActivity.java 中这里需要用到的是 VideoView 作为视频播放时的显示位置。...private VideoView videoView; 在 onCreate 里,对界面的按钮和显示位置实例化,并检查权限。..., Toast.LENGTH_LONG).show(); finish(); } break; default: break; } } 在一个 onClick...= null){ videoView.suspend(); } } } 在 AndroidManifest.xml 中配置相应的权限。 <?
前言 本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回 APP 页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: ?...实现 首先,需要添加相对应悬浮窗权限: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" / 在 Activity...videoView = view.findViewById(R.id.video_view); //视频内容设置 videoView.setVideoPath("https://stream7....//开始触控的坐标,移动时的坐标(相对于屏幕左上角的坐标) private int mTouchStartX; private int mTouchStartY; //开始时的坐标和结束时的坐标...; case MotionEvent.ACTION_UP: break; default: break; } //如果是移动事件不触发
5.为控制器添加自定义布局. 6.调整显示大小。 7.自定义controller。 使用 ExoVideoView 1.依赖 最简单的方式是加入gradle依赖。...请确认在工程的build.gradle中添加了JCenter和google()。...中定义 在xml中使用 ExoVideoView: <com.jarvanmo.exoplayerview.ui.ExoVideoView android:id="@+id/videoView..." android:layout_width="match_parent" android:layout_height="300dp"/> 3.在java代码中 ExoVideoView...app:controller_display_mode="all|none|top|top_landscape|bottom|bottom_landscape" 在java中: videoView.setControllerDisplayMode
但是不积跬步无以至千里,如果我们要定制一个好用好看的播放器,还是得先把笨拙的VideoView与MediaController搞清楚才行。...甚至布局文件中都不用声明视频视图,而在代码中动态添加视频画面,由此便衍生出VideoView和MediaController的两种集成方式: 1、在布局文件中声明VideoView。...2、在代码中动态添加VideoView。 VideoView对象的使用步骤同上。...下面是VideoView和MediaController的播放效果截图: ?...3、进度条与播放时间的样式也不能定制; 4、播放器的视频画面不会自动全屏显示; 5、播放器没有实现调大和调小音量; 6、播放器不会自动设置标题和背景; 基于以上情况,我们要想让视频播放器生动活泼起来
这个 类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器。...VideoView,稍后的视频就将在这里显示。...然后在 VideoView 的下面又放置了三个按钮,分别用于控制视频的播放、暂停和重新播放。...最后在 onDestroy()方法中,我们还需要调用一下 suspend()方法,将 VideoView 所占用的 资源释放掉。...这样的话,你就已经将 VideoView 的基本用法掌握得差不多了。不过,为什么它的用法 和 MediaPlayer 这么相似呢?
使用VideoView播放MP4 ? 播放示例 实现简单的播放功能,播放手机本地的MP4文件。不依赖任何第三方框架,不添加任何防腐剂。 添加一个系统自带的控制条。...android:name="android.permission.READ_EXTERNAL_STORAGE" / 准备布局文件 在frag_video_view.xml中放置VideoView;为了让内容居中显示...否则可能会出现视频内容不居中的情况。 <?xml version="1.0" encoding="utf-8"?...="vertical" <VideoView android:id="@+id/video_view" android:layout_width="match_parent...在Fragment中直接播放视频文件; private static String mMP4Path; VideoView mVideoView; MediaController mMediaController
视频组件选择 使用的是b站开源的ijk播放器 组件布局 正常的列表视频在视频加载完成之前肯定是要显示图片,视频加载好后在播放视频,ijk中没有发现视频有缩略图的选项,所以布局使用一个帧布局,用张图片把...android:layout_width="match_parent" android:layout_height="wrap_content"> <com.app.widget.live.VideoView...android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height...videoView.getTag(); // 这里有item复用问题,所以给每个item加上tag,然后在这里判断tag和index是否一样,不一样说明被复用了 if (...= index) { // 如果不release后面的start无法正常执行,只能release videoView.release();
解决办法:缩放图片加载到内存 步骤: 1、获得设备屏幕的分辨率; 2、得到原图的分辨率; 3、通过比较得到一个合适的比例值; 4、按照比例值缩放图片 5、把图片显示在imageview 缩放图片并加载到内存中...解决办法: 缩放图片加载到内存 步骤: 1、获得设备屏幕的分辨率; 2、得到原图的分辨率; 3、通过比较得到一个合适的比例值; 4、按照比例值缩放图片 5、把图片显示在imageview...BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/lp.jpg", opts); //5、把图片显示在...; surfaceview 重量级空间,当画面可见时,双缓冲器被创建,占用较高的cpu和内存资源。...VideoView <io.vov.vitamio.widget.VideoView android:id="@+id/vv" android:layout_width="match_parent
5.为控制器添加自定义布局. 6.调整显示大小。 7.自定义controller。 使用 ExoVideoView 1.依赖 最简单的方式是加入gradle依赖。...请确认在工程的build.gradle中添加了JCenter和google()。...中定义 在xml中使用 ExoVideoView: <com.jarvanmo.exoplayerview.ui.ExoVideoView android:id="@+id/videoView..." android:layout_width="match_parent" android:layout_height="300dp"/> 3.在java代码中 ExoVideoView...: app:controller_display_mode="all|none|top|top_landscape|bottom|bottom_landscape" 在java中: videoView.setControllerDisplayMode
此外,通过有计划地对相机和绘制流水线进行优化,AR应用的性能也有望得到改进。 VRPinea独家点评:玩够了VR的Unity开始试水AR。...三星S7升级安卓7.0 却无法兼容Gear VR Phandroid报告显示,很多用户为了使Galaxy S7和Galaxy S7 Edge适配Gear VR而下载Android Nougat Beta...但因为Oculus Store与Android Nougat不兼容,为了使Gear VR在Nougat下工作,Oculus Store必须更新。目前,Oculus官方还未发布更新消息。...佳能与VR相结合 用户可在购买前试用相机和镜头 日前,佳能利用VR技术研发了一款APP,潜在买家不仅有机会在购买之前测试其最喜爱的相机和镜头,还能够完善其摄影技能并在此过程中了解更多的设备。...为降低犯罪率 欲用VR技术改造囚犯 据外媒报道,纽约初创公司Virtual Rehab计划利用VR技术为囚犯提供矫正服务和改造计划,同时还将提供切合实际的职业培训。
前言 Android 7.0 经过5个开发者预览版本的改善,终于在8.22日正式推送,并确定版本名为Nougat(牛轧糖)。结合本人的体验,在此简单的聊聊Android 7.0新特性。...1 Android Nougat 的主要更新 性能 JIT编译器、VR模式、Vulkan™ API 使用新的JIT编辑器的系统及应用有更快的启动速度,同时使用更少的内存,在系统更新时你再也不会有“Android...Android 7.0重新设计了通知系统的显示和设置方式。 系统可用性提升 自定义快捷设置、重新设计快捷设置栏、重新设计设置、紧急信息、锁屏壁纸。...2 系统在设置和通知上的优化 重新设计了Notification系统,Notification拥有更加丰富的交互操作以及自定义其显示样式。 ? ? 重新设计了设置的交互,使设置操作更加快捷。 ?...9 参考资料 https://www.android.com/versions/nougat-7-0 https://developer.android.com/about/versions/nougat
floatrightVolume, int priority, int loop, float rate); leftVolume,rightVolume通常取1;priority指优先级,通常为1;loop指定循环次数,0为不循环...播放音频 现在layout文件中创建该组件,然后 VideoView video = (VideoView)findViewById(R.id.videoView1); video.setVideoPath...video.setVideoURI(Uri uri); video.start(); video.pause(); video.stopPlayback(); 使用MediaPlayer和SurfaceView...="true" android:layout_gravity="center" android:layout_width="300sp" android:layout_height...surfaceview.getHolder()); 4利用MediaPlayer控制视频的播放 控制相机拍照 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置全屏显示
键的时候,会让Surface销毁,并且在重新进入APP的时候,让Surface重建,在Surface重建的时候,SurfaceView那一块是透明的,显示的会是Activity的背景 在上下滑动的时候,...会导致Surface绘制不及时,会有残留 多个VideoView同时播放的时候,在SurfaceFlinger支持不好的手机上,会出现下一个SurfaceView的某一帧会显示在上一个SurfaceView...看起来像是普通的View绘制和SurfaceView的绘制是两套) ANR的问题 由于MediaPlayer中的release,reset,stopPlayBack都是同步的。...而我们在ListView的每个卡片中,都有可能出现视频,而且需要自动播放,由于没有时间做视频先下载,再播放,所以选择的是Android自带的流播放。会一段一段的将视频先读到缓冲区,再播放。...在Android中,直接可以用HandlerThread,因为这样可以尽可能的让资源的消耗达到最少,HandlerThread在没有新事件到来的时候,都是处于wait状态,直到有新事件的到来,才会被notify
前言 本章内容是android.widget.VideoView,版本为Android 3.1 r1,翻译来自"唐明",由"cnmahj"审核,再次感谢"唐明"!...VideoView 译者署名:唐明 审核:cnmahj 版本:Android 3.1 r1 结构 继承关系 public class VideoView extends SurfaceView implements... android.widget.VideoView 类概述 (图片转载至这里) 用于播放视频文件。 ...VideoView 类可以从不同的来源(例如资源文件或内容提供器) 读取图像,计算和维护视频的画面尺寸以使其适用于任何布局管理器, 并提供一些诸如缩放、着色之类的显示选项。...如果measureSpec对象传入的模式是AT_MOST,返回的将是desiredSize和measureSpec对象的尺寸两者中最小的那个。
本文用的是系统VideoView,然后播放sd卡中的视频来作为演示(源码中带有f2.mp4和f2.srt,运行时拷贝到sd卡就行)。...下面简单介绍一下源码: MainActivity包括显示字幕和如何实现横竖屏如何切换: public class SubtitleActivity extends Activity implements...SettingNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // String rawUri = "android.resource...setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); changeToSmallScreen(); /** * 这里点击按钮转屏,用户5秒内不转屏幕...项目源码,点击下载…… 以上这篇Android 实现视频字幕Subtitle和横竖屏切换示例就是小编分享给大家的全部内容了,希望能给大家一个参考。
领取专属 10元无门槛券
手把手带您无忧上云