
安卓开发
文章平均质量分 91
JokerWann
好看的皮囊千篇一律,有趣的灵魂万里挑一。
展开
-
Mac环境用Shell脚本编译最新版ffmpeg-4.2.1
Mac环境用Shell脚本编译最新版ffmpeg-4.2.1FFmpeg简介FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序FFmpeg是一个多媒体视频处理工具,有非常强大的功能,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等FFmpeg是一套开源免费跨平台的多媒体框架。它提供了录制、转换以及流化音视频的完整解决方案,目前bilibili、抖...原创 2019-11-17 14:44:47 · 683 阅读 · 0 评论 -
Android事件分发机制源码分析
Android事件分发机制源码分析一、事件定义定义:当用户触摸屏幕时,将产生的触摸行为(Touch事件)事件类型MotionEvent.ACTION_DOWN 手指刚接触屏幕MotionEvent.ACTION_MOVE 手指在屏幕上滑动MotionEvent.ACTION_UP 手指从屏幕上松开MotionEvent.ACTION_CANCEL 非人为因素取消二、事件序列正...原创 2019-11-01 11:49:43 · 320 阅读 · 0 评论 -
自定义Android属性动画框架
通过本篇文章,你将会了解安卓属性动画的基本架构插值器和估值器在动画中的作用手撸属性动画设想一下,如果你是google的工程师,让你去设计一个属性动画,你该如何设计?在设计属性动画时我们应该要考虑哪些问题?生成动画的api调用约简单越好一个View可以有多个动画,但同时只能有一个在运行动画的执行不能依赖自身的for循环如何让动画动起来我们先来看下属性动画的种类平移动画...原创 2019-10-29 23:00:12 · 405 阅读 · 0 评论 -
源码分析UI绘制三部曲之draw
众所周知,UI绘制三部曲是measure、layout、draw本篇我们分析ViewRootImpl#performDraw private void performDraw() { if (mAttachInfo.mDisplayState == Display.STATE_OFF && !mReportNextDraw) { r...原创 2019-10-27 22:49:15 · 329 阅读 · 0 评论 -
源码分析UI绘制三部曲之layout
众所周知,UI绘制三部曲是measure、layout、draw本篇我们分析View#layout private void performLayout(WindowManager.LayoutParams lp, int desiredWindowWidth, int desiredWindowHeight) { mLayoutRequested...原创 2019-10-27 22:13:36 · 211 阅读 · 0 评论 -
Android组件化工程结构以及项目实施
组件化优点1、代码解耦2、方便多人协作开发3、可复用性高,不同的APP可复用不同组件4、每个组件可独立运行,方便开发调试组件化工程结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**第一层:**空壳app。应用的入口,存放启动页,依赖所有业务组件**第二层:**业务组件。根据不同业务横向拆分出来的业务组件。任何一个业务组件都可以独立出来成为一个应用**第...原创 2019-10-23 13:00:53 · 503 阅读 · 0 评论 -
从源码角度分析AppCompactActivity#setContentView
之前有一篇文章源码分析了Activity#setContentView,但是目前我们写的Activity基本都是继承自AppCompactActivity,google也是建议继承AppCompactActivity可以提高一些兼容性,今天我们就来一探AppCompactActivity#setContentView的究竟,看看跟Activity#setContentView有何异同。依照之前的...原创 2019-10-19 22:26:10 · 566 阅读 · 0 评论 -
源码分析UI绘制三部曲之measure
众所周知,UI绘制三部曲是measure、layout、draw本篇我们分析View#measurepublic final void measure(int widthMeasureSpec, int heightMeasureSpec) { ... final boolean matchesSpecSize = getMeasuredWidth() == M...原创 2019-10-18 22:30:28 · 211 阅读 · 0 评论 -
从源码的角度分析View的绘制流程
温馨提示:以下源码分析会截取源码进行说明,部分方法源码较长会只保留关键代码,其他代码用…省略View的绘制入口是ActivityThread#handleResumeActivityfinal void handleResumeActivity(IBinder token, boolean clearHide, boolean isForward, boolean re...原创 2019-10-16 08:40:42 · 189 阅读 · 0 评论 -
从源码角度分析Activity#setContentView
我们平时在开发的过程中将一个layout绘制出来是通过Activity#setContentView,那么我们就从setContentView入手来看整个绘制流程。public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {...原创 2019-10-14 13:21:38 · 262 阅读 · 0 评论 -
CoodinatorLayout 实现 banner沉浸式+滚动视差+悬浮搜索框+标题置顶复杂联动效果
1.开门见上,先上效果图 代码传送门2.CoodinatorLayout及相关控件简介 CoordinatorLayout遵循Material Design风格,包含在 support Library中,结合AppBarLayout, CollapsingToo...原创 2018-08-22 21:00:37 · 5539 阅读 · 9 评论 -
安卓设计模式之观察者模式
观察者模式(Observer Pattern) 定义对象间的一(Observable)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。 Observer模式要解决的问题为:建立一个一(Observable)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。列举原创 2017-03-12 16:53:00 · 508 阅读 · 0 评论 -
JobScheduler API 的使用
闲言碎语: 最初,我的boss叫我看下JobScheduler API(可能我们项目中要用到),让我写个使用文档出来,然后给公司其他同事讲讲,但是由于公司项目升级迫在眉睫,写文档这事儿就搁置了,现在有大把的空闲时间了,于是乎接着之前写的部分文档就有了下面文章。本文是我结合谷歌官方对JobScheduler的讲解和网络上各路大神的见解来写的,若有理解不到位处,还望谅解,若有有错误,也欢迎指原创 2017-03-10 10:02:48 · 886 阅读 · 0 评论 -
Android自定义View之圆形比例图(进度条)
在我们APP中,经常会用到如下的一张比例图: 这个比例图可以清楚的展示一个项目所占的比例,同时也可以变成一个圆形进度条:原创 2017-03-30 17:31:07 · 1742 阅读 · 0 评论 -
Android自定义View之水波纹显示进度效果
显示进度在我们APP中随处可见,今天我们来撸一撸水波纹进度效果,具体效果请看下图: 这是一个自定义View,大家可以明显的看到,自定义View中用到了贝塞尔曲线,我们先来简单了解下贝塞尔曲线。 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图原创 2017-04-01 22:22:02 · 1455 阅读 · 0 评论 -
使用LitePal操作数据库
LitePal是一款开源的数据库操作框架,它采用了对象关系映射(ORM)模式,并封装了对数据库的常见的操作,使得不用编写一行SQL语句就可以完成建表和CRUD。 我们来看看怎么使用LitePal操作数据库。 ①在module的build.gradle里面添加依赖: dependen原创 2017-04-12 18:12:48 · 598 阅读 · 0 评论 -
使用RecyclerView遇到notifyDataSetChanged无效
最近项目里集成了环信的即时通讯,现在有这么一个需求,当收到消息时,动态更新整个消息列表的总的未读消息数。效果图如下: 看看我之前的代码,在消息监听的回调直接调用adapter.setData( getP().loadConversationList()),原创 2017-09-07 12:34:51 · 5479 阅读 · 0 评论 -
编译后ijkplayer使用文档
第一步:在AndroidStudio中新创建一个工程,在工程文件的libs目录下将你需要支持的平台的so文件复制进去,我全部复制进去了,如图1: 图1 图 2再将编译后的ijkplayr工程目录下的ijkplayer-java/b原创 2017-12-08 13:49:17 · 2123 阅读 · 3 评论 -
在Mac下编译ijkplayer
最近项目中需要集成播放器来播放拉下来的直播流,看了很多开源的播放器框架,最终选择了B站开源的ijkplayer。ijkplayer是一个基于FFmpeg的轻量级Android/iOS视频播放器。FFmpeg的是全球领先的多媒体框架,能够解码,编码, 转码,复用,解复用,流,过滤器和播放大部分的视频格式。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库liba原创 2017-12-06 16:33:03 · 2690 阅读 · 0 评论 -
安卓开发中禁掉ViewPager预加载问题
ViewPager预加载 ViewPager有一个 “预加载”的机制,默认会把ViewPager当前位置的左右相邻页面预先初始化,它的默认值是 1(看源码),这样做的好处就是ViewPager左右滑动会更加流畅,但是预先加载用户没有看到的页面的数据,会花费用户的一定的流量,所以就有了禁止ViewPager的“预加载”,节省用户流量。...原创 2017-03-08 00:42:38 · 1049 阅读 · 0 评论