玩转慕课网App启动引导页效果
2016-01-29 23:12
507 查看
本文为作者(石岩)原创,转载请指明出处:
http://blog.csdn.net/a1002450926/article/details/50609587
今天给大家带来慕课网App的引导页面的效果实现,相信大家有用过慕课网App的小伙伴,在第一次使用时,会发现慕课网的App的效果很棒,但是同时会有一个疑问,这个引导页面是怎么实现的呢?下面带着这个疑问,岩仔为你揭开它的神秘面纱。
实现思路
我第一次打开慕课网App的引导页面,思考了一下,以为是用gif图片做的,后来经过反编译验证后,发现每个引导页面都是加载的一段视频。
既然我们知道每个页面都是视频的话,那么就很好做了有木有,我们可以引导页是一个Activity,里面通过ViewPager放置4个Fragment,每个Fragment都播放自己的视频就OK了。
所以我们最好自己自定义一个MCVideoView,然后提供一个设置播放资源的一个方法就OK了。
代码如下:
演示效果如下:
源码如下:
MoocDemo.zip
http://blog.csdn.net/a1002450926/article/details/50609587
今天给大家带来慕课网App的引导页面的效果实现,相信大家有用过慕课网App的小伙伴,在第一次使用时,会发现慕课网的App的效果很棒,但是同时会有一个疑问,这个引导页面是怎么实现的呢?下面带着这个疑问,岩仔为你揭开它的神秘面纱。
实现思路
我第一次打开慕课网App的引导页面,思考了一下,以为是用gif图片做的,后来经过反编译验证后,发现每个引导页面都是加载的一段视频。
既然我们知道每个页面都是视频的话,那么就很好做了有木有,我们可以引导页是一个Activity,里面通过ViewPager放置4个Fragment,每个Fragment都播放自己的视频就OK了。
所以我们最好自己自定义一个MCVideoView,然后提供一个设置播放资源的一个方法就OK了。
代码如下:
public class MCVideoView extends VideoView{ public MCVideoView(Context context) { this(context,null); } public MCVideoView(Context context, AttributeSet attrs) { super(context, attrs,0); } public MCVideoView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec)); } public void playVideo(Context context,Uri uri){ if(uri==null){ throw new IllegalArgumentException("Uri can not be null"); } //设置播放路径 setVideoURI(uri); //开始播放 start(); setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { //设置循环播放 mp.setLooping(true); } }); setOnErrorListener(new OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { return true; } }); } }
演示效果如下:
源码如下:
MoocDemo.zip
相关文章推荐
- 【转】Android开发的那些坑和小技巧
- 【Android学习5】Clean 之后R文件丢失
- perl 微信 涉及的数组结构
- Visual Studio Community 2013的安装方法
- android项目重构之路:界面篇
- Flask + SAE 接入微信公众平台
- AndroidStudio自定义属性无法识别
- angularJS $watch $apply $digest
- 【转】Android真正的静默安装
- 一些iOS常用的第三方库和控件
- Android Studio快捷键(MAC版)
- iSensor APP 之 摄像头调试 MT9D001 MT9P031 测试小结 200万像素和500万像素摄像头
- Android之Bitmap 高效加载
- res与res-auto的区别——AndroidStudio自定义属性xmlns无法识别有关问题
- [iOS]如何删除工程里面用cocoapods导入的第三方库
- android+NDK+Mac安装
- Android--viewpager
- IOS项目开发实战——Storyboard设置界面技巧与注意事项
- 使用Reveal分析任意App
- Android 简单欢迎页面设计