有了这些框架,还愁做不好Android开发吗?
速度膜拜
内存泄露检测 LeakCanary
github地址
https://github.com/square/leakcanary
github地址
https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki/%E9%A6%96%E9%A1%B5
MVP
Android MVP Sample,MVP+Retrofit+RxJava实践小结
https://github.com/WuXiaolong/AndroidMVPSample
butterknife
github地址
https://github.com/JakeWharton/butterknife
网络请求
Retrofit
https://github.com/square/retrofit
依赖
compile'com.squareup.retrofit2:retrofit:2.1.0'
compile'com.squareup.retrofit2:converter-gson:2.1.0'
compile'com.squareup.retrofit2:adapter-rxjava:2.1.0'
相关博客
响应式编程
github地址
https://github.com/ReactiveX/RxJava
事件总线
数据库
https://github.com/greenrobot/greenDAO
图片加载
glide
github地址
https://github.com/bumptech/glide
compile'com.github.bumptech.glide:glide:3.7.0'
picasso
github地址
https://github.com/square/picasso图片操作
简介
Image Cropping Library for Android 图片裁剪
https://github.com/Yalantis/uCrop
相关博客
图片操作
github地址
https://github.com/chrisbanes/PhotoView
A circular ImageView for Android 圆头像
https://github.com/hdodenhof/CircleImageView
视频播放
VideoView
VideoView 的使用非常简单,播放视频的步骤:
在界面布局文件中定义 VideoView 组件,或在程序中创建 VideoView 组件
调用 VideoView 的如下两个方法来加载指定的视频:
setVidePath(String path):加载 path 文件代表的视频
setVideoURI(Uri uri):加载 uri 所对应的视频
调用 VideoView 的 start()、stop()、psuse() 方法来控制视频的播放
ExoPlayer
用法
ExoPlayer 开源项目包含了 library 和 示例:
ExoPlayer library – 这部分是核心的库
Demo app – 这部分是演示怎么使用 ExoPlayer 的 Demo
ExoPlayer 库的核心类是 ExoPlayer 类。该类维护了播放器的全局状态 。比如如何获取媒体数据,如何缓冲以及是怎样的编码格式。
ExoPlayer 基于 MediaCodec 和 AudioTrack 提供了默认的音视频的 TrackRenderer 实现。所有的 renderers 都需要 SampleSource 对象,ExoPlayer 从 SampleSource 获得 media samples 用于播放。下图展示了 ExoPlayer 是如何配置组合这些组件用于播放音视频的。
ExoPlayer 库提供了一些不同类型的 SampleSource 实例:
ExtractorSampleSource – 用于 MP3,M4A,WebM,MPEG-TS 和 AAC;
ChunkSampleSource – 用于 DASH 和平滑流的播放;
HlsSampleSource – 用于 HLS 播放;
在 ExoPlayer 的 Dome 中使用 DemoPlayer 对 ExoPlayer 进行了封装,并提供了使用上述几种 SampleSource 构建 TrackRenderer 的 Builder。
SmoothStreamingRendererBuilder
DashRendererBuilder
ExtractorRendererBuilder
在使用的时候我们根据不同的需求创建对应的 RendererBuilder,然后将 RendererBuilder 传递给 DemoPlayer 然后调用 DemoPlayer 的 setPlayWhenReady 方法。