
Android开发
文章平均质量分 85
saberhao
这个作者很懒,什么都没留下…
展开
-
Android面向切面编程(AOP)
AOP简介什么是AOPAOP(Aspect Oriented Programming),中译为面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP(面向对象编程)的延续,是函数式编程的一种衍生范型。AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高代码的灵活性和可拓展性。在Android中,AOP主要用于日志记录,权限控...原创 2019-12-09 13:50:00 · 812 阅读 · 0 评论 -
Android 贝塞尔曲线原理及其绘制实现
Android动画,特别是涉及运动轨迹的,很多时候都会使用贝塞尔曲线,下面将系统的介绍下贝塞尔曲线的相关知识。什么是贝塞尔曲线贝塞尔曲线于1962年,由法国工程师皮埃尔·贝兹(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线。下文我们将简要介绍德卡斯特里奥算...原创 2019-11-29 17:44:32 · 1646 阅读 · 0 评论 -
App Startup基本使用及源码分析
The App Startup library provides a straightforward, performant way to initialize components at application startup. Both library developers and app developers can use App Startup to streamline startup sequences and explicitly set the order of initializatio原创 2020-08-25 22:45:04 · 743 阅读 · 0 评论 -
ButterKnife源码完全解析
本文主要介绍ButterKnife基本使用,并对butterKnife如何实现模板代码生成和依赖注入做了详细分析原创 2020-04-20 18:25:07 · 499 阅读 · 1 评论 -
LeakCanary2源码分析
LeakCanary2源码分析LeakCanary介绍LeakCanary使用加入依赖简单实践LeakCanary源码分析1. 如何查看源码2. 源码分析2.1 ActivityDestroyWatcher.install2.2 FragmentDestroyWatcher.install2.3 onAppWatcherInstalled2.4 HeapAnalyzerService.runAna...原创 2020-04-01 15:23:01 · 1007 阅读 · 0 评论 -
GreenDAO基本使用及源码分析
GreenDAO基本使用及源码分析GreenDAO介绍GreenDAO基本使用添加依赖创建存储对象实体类GreenDAO初始化GreenDAO实现数据库增删改查增删改查GreenDao源码分析1. 创建数据库帮助类对象DevOpenHelper2. 获取数据库3. 创建DaoMaster对象4. AbstractDao构造函数5. 创建DaoSeesion对象6. 插入7. 删除8. 修改9. 查...原创 2020-03-28 11:53:52 · 994 阅读 · 2 评论 -
Glide图片下载架构完全解析
文章目录Glide框架总览图片加载源码分析Glide.with()1. Glide.with(Context)2. GlideBuilder.build3. Glide构造方法4. RequestManagerRetriever.get5. RequestManager生命周期6. Registry7. Glide.with小结load(url)1.RequestManager.load2.as...原创 2020-03-16 22:02:34 · 431 阅读 · 0 评论 -
[MD]模仿百度手机助手动态折线图
最近下了个百度手机助手,看到里面有很炫酷的折现图,效果是这样的:于是我自己想尝试做一下动态折线图,这里 我使用的是 helloCharts 这个开源项目在布局文Activity_main,xml中添加LineChartView <lecho.lib.hellocharts.view.LineChartView原创 2015-12-25 23:01:01 · 733 阅读 · 0 评论 -
M(6.0)相关的坑(一)
怎么别人家的apk安装的时候,权限默认是全开的,而我们家的,默认都是关闭的,是不是我们家的哪里没写好=。=原创 2016-05-06 10:12:42 · 701 阅读 · 0 评论 -
RxJava学习笔记
RxJava基本概念以及API用法介绍,理解响应编程之美原创 2016-08-12 14:58:54 · 832 阅读 · 0 评论 -
Retrofit源码浅析
Retrofit源码浅析上一篇文章 Retrofit实践,我们只是对使用Retrofit做了初步了解,但是有两个内容,我们当时并没有深入分析,分别是:用于对RxJava支持的适配器 RxJavaCallAdapterFactory,以及 动态代理构造retrofit.create() ,下面我们就进行简单的分析:Retrofit源码浅析RxJavaCallAdapterFactoryretrof原创 2016-09-13 11:12:40 · 1062 阅读 · 0 评论 -
Otto EventBus实践
Otto EventBus实践Otto 框架是由 Square 公司开发的,一款用于android 事件总线 EventBus,我们可以通过他来传递事件,具体使用请参考官网,这里我主要通过一个简单的例子来介绍我们在该如何使用这一框架实践在gradle加入依赖compile 'com.squareup:otto:1.3.8'其实总线这东西,和我们以前学Arm什么都是一样的,都是为了实现事件的分发,原创 2016-09-13 13:41:14 · 1112 阅读 · 0 评论 -
MVP实践
结合实例介绍MVP模型原创 2016-08-18 13:42:19 · 580 阅读 · 0 评论 -
Retrofit实践(MVP+RxJava)
Retorfit实践(MVP+RxJava)之前两篇文章分别介绍了 MVP 以及 RxJava,今天我们通过学习Retrofit来进一步介绍他们。文章目录如下:Retorfit实践MVPRxJavaRetorfit介绍Retorfit实践添加依赖Model层定义请求接口创建 Retrofit对象View层Presenter层Retorfit介绍Retrofit(GitHub)与okh原创 2016-08-24 10:53:34 · 958 阅读 · 0 评论 -
RxJava实现EventBus
上一篇文章我们介绍了Otto EventBus, 我们发现EventBus用的就是典型的观察者模式,也就是包含4个主要元素 ,订阅 ,订阅者,事件以及总线,这个和我们之前介绍的RxJava是基本一致的,那么我们可以用RxJava来实现EventBus么,答案是肯定的,我们接着一步步来实现。文章目录:添加依赖实现RxBus内存回收异常处理自动重新订阅捕获线程切换是时候用RxBus取代O原创 2016-09-16 11:44:27 · 628 阅读 · 0 评论 -
模仿和彩云首页动画
前段时间用了一下移动的和彩云,在首页有个按钮动画,今天我们就来试着用模仿一下,这个是效果图: 我们可以看到动画主要分两大块: 1.“+”号按钮的旋转操作 2. 其他分类按钮的动画效果 因为进入和退出的动作都不一样,所以这里 我们需要写4种动画效果,分别是: 1.“+”按钮逆时针旋转120度 2.“+”按钮顺时针旋转120度 3. 其他分类按钮上下振动动画 4. 其他分类按钮向原创 2016-09-22 15:45:51 · 741 阅读 · 0 评论 -
Android N适配小结
今天看完郭神关于M版本运行权限的视频,突然想到何不把最近项目中关于N版本适配的内容总结一下,和大家分享。原创 2016-12-28 20:59:35 · 7095 阅读 · 0 评论 -
[MD][仿煎蛋]observablescrollview下拉隐藏actionbar
煎蛋是这个样子的:下来隐藏actionbar是个很好的用户体验,特别是对于使用屏幕比较小的用户,下面我们自己来做这个功能。伟大的开源已经帮我们提供了这样的方法,我们只要站在巨人的肩膀上开发就可以了,这里我们引用的是 ksoichiro的Android-ObservableScrollView 我们只引用开源工程中的几个文件然后在activity_main.xml中添加原创 2015-12-21 21:28:48 · 1321 阅读 · 1 评论 -
[Volley+Gson]获取PM2.5小应用(二)/自定义Volley Request
上一篇文章 [Volley+Gson]获取PM2.5小应用,我们介绍了使用Volley+Gson来获取并解析Json数据原创 2016-01-05 21:54:06 · 855 阅读 · 0 评论 -
[Volley+Gson]获取PM2.5小应用
最近广州的天气质量真心不行,最高PM2.5都到了200+,咳咳,本来就宅的人只能更宅了。。。今天我们会做一个简单的apk,来获取空气质量的相关数据。数据来源:百度API , 空气质量的API,请点击先贴一下百度的Java示例原创 2016-01-04 22:19:57 · 704 阅读 · 0 评论 -
简单的手电筒程序(基于Camera类实现)
控制手机闪关灯按照思路大概有下面三种方法1. 使用camera类控制闪光灯方法setFlashMode 进行操作2. 通过JNI控制现有驱动节点(使用与三星手机,其他手机不确认)3. 重新编写驱动代码,提供通用的控制节点,供上层应用调用实现Flash OnFlash Off上图为效果图(后来才发现原来灯泡和手电筒是不一样的东原创 2015-06-12 15:15:08 · 1007 阅读 · 0 评论 -
Android音乐播放器 -- UI处理
下面介绍下音乐播放列表UI上的处理,效果如下图UI上的处理主要表现在1. 播放图层添加圆角处理在 music_detail_layout.xml中添加自定义的drawalbeandroid:background="@drawable/shapeshape.xml <stroke android:color="#5A5F6B原创 2015-07-20 10:17:54 · 1216 阅读 · 2 评论 -
Android音乐播放器 -- 实现框架
MediaPlayer 框架有两种方案第一种是通过全局变量保存当前状态,触发状态后获取全局变量进行配置第二种是通过intent,让 Media player service 和 activity之间通信,实现同步其实两种方法各有优势,第一种方法实现起来相对简单快捷,而第二种方法实现起来比较困难,但是对Acitvity 和 Service通信机制的学习确是大有裨益最后我还是选了第二种原创 2015-07-15 20:31:16 · 2810 阅读 · 0 评论 -
Android音乐播放器 -- MediaPlayer Service实现
上一篇文章 Android音乐播放器 -- 实现框架 说到 MediaPlayer Service 就是音乐播放器的”中部枢纽“,为什么这样说,主要有两点1. MediaPlayer Service (简称MPS ) 负责整个音乐播放器的协调一致,比如,在播放列表显示当前播放的歌曲和播放详情显示的内容必须一致,这个就需要MPS来协调2. MPS肩负起音乐播放器最本质的工作 -- 播放音乐原创 2015-07-16 13:18:01 · 1615 阅读 · 0 评论 -
Android音乐播放器 -- 数据处理
下面我们通过 专辑 列表来大概说明下,数据处理的流程,下面先看看UI列表中主要显示 专辑名称 以及该 专辑分类中歌曲的数量, 我们要做的1. 定义 AlbumInfo 类型用于存储 专辑名称 + 歌曲数量 的信息 和相关操作AlbumInfo.javapackage com.saberhao.support;public class AlbumInfo{原创 2015-07-16 14:57:02 · 926 阅读 · 0 评论 -
Android音乐播放器-- 功能介绍
目前市面上的播放器功能越来越强大,相对的,也越来越复杂,所以就萌发了做一个属于操作简单的音乐播放器的想法,目前实现的功能包括如下几点 :1. 音乐列表2. 专辑分类列表3. 歌手分类列表4. 控制音乐播放 (开始/暂停 下一首 上一首 )5. 音乐信息显示(时长 当前进度 歌曲名 歌手)6. 音乐进度控制 7. 默认图片显示正在实现功能如下:1原创 2015-07-14 15:42:07 · 1591 阅读 · 0 评论 -
Android音乐播放器 -- UI 代码构现
Fragment是 android3.0之后出现的概念, 目前广泛使用与各种App中,比如大家非常熟悉的微信,QQ等的切换,我使用了Fragment实现 我的 / 歌手 / 专辑 列表切换,下面是利用Fragment搭建UI的过程MySongFragment.javapackage com.saberhao.fragment;import java.util.List;impor原创 2015-07-15 14:54:29 · 1477 阅读 · 0 评论 -
浅谈动态注册JNI方法
之前的文章 《简单的手电筒程序(基于系统驱动节点)》,我们见了如何通过JNI的方法修改文件节点,当时用的是静态注册的方法,即JAVA层再load so的时候按照 Java___ 的命名规则在Native层寻找对应的处理函数,但是这个方法虽然简单,但是也存在一定的弊端: 1. 初次调用native函数时需要根据命名规则建立对应关系,影响效率; 2. native函数过长的命名会造成管理不方便。所原创 2015-08-13 21:03:44 · 575 阅读 · 0 评论 -
Android照片墙实现 -- 图片加载,防止OOM的处理办法
照片墙由于涉及多图加载,很容易造成OOM,或者系统卡顿,我们主要是用了下面三个方法来避免1. 按比例缩减图片尺寸2.使用Cache缓存技术3. 多线程加载下面我们通过代码详细介绍~1. 按比例缩减图片尺寸 private Bitmap getBitmapFromMemoryCache(Uri uri,Context context) { // TODO Auto-g原创 2015-08-28 21:12:27 · 655 阅读 · 0 评论 -
Android照片墙实现 -- 功能介绍
最近学习了下图片处理,也遇到了网上大家常说的OOM,把知识总结了下,简单做了个照片墙,算是对最近学习的总结最要实现模块包括 :1. 布局设计2. 图片加载,防止OOM的处理办法 (重点)3. 图片处理(UI美化)效果如下图,请原谅我没节操的爱好=。= 敬请期待原创 2015-08-28 20:21:22 · 783 阅读 · 0 评论 -
Android照片墙实现 -- 布局设计以及数据处理
本文主要介绍照片墙的布局和数据处理1. 主界面为GridView<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content"原创 2015-08-28 20:48:51 · 1580 阅读 · 0 评论 -
Android音乐播放器 -- 滑动切换实现
因为之前播放器 Android音乐播放器 是切换列表需要手动去点击Tittle Tab,感觉不方便,所以今天就做了一点修改,可以通过左右滑动 list 来实现切换,效果如下图:改造的关键在于 FragmentStatePagerAdapter 的使用,详情我们接下来介绍我们修改的文件都是在MainActivity.java,点击切换版本的源码,请猛戳 这里 下载1. onCre原创 2015-08-28 17:05:41 · 2082 阅读 · 0 评论 -
android关闭cursor的方法
今天review了一下之前写播发器的代码,发现了个问题,在音乐数据信息查询后,没有及时关闭cursor,虽然目前使用没什么大问题,可是在音乐数据比较多时,可能会有不好的影响,所以我还是觉得有必要对Cursor添加关闭处理,再贴一下音乐播放器《Android音乐播放器 -- 数据处理》中数据处理的代码/** * 用于从数据库中查询相同专辑的歌曲信息,保存在List集合当中 *原创 2015-08-17 13:17:10 · 2469 阅读 · 0 评论 -
[MD学习]使用ActionBar+DrawableLayout+Palette打造侧滑UI
Google 在2014年提出了 Material Design(MD) 的设计规范,根据MD做出来的UI效果炫酷,成了Android码农必不可少的利剑今天我们的Demo也将使用动态导航图标+主色调匹配这样的技能,做出来的效果如下图 主要完成工作:1. 使用DrawableLayout打原创 2015-12-10 16:25:10 · 2133 阅读 · 0 评论 -
[MD]模仿百度手机助手动态折线图/MPAndroidCharts实现(一)
上一篇文章 [MD]模仿百度手机助手动态折线图 介绍了使用HelloChart模拟百度手机助手动态折线图的方法,接下来我们使用大家都比较熟悉的MPAndroidChart来实现同样的效果,之所以用MPChart,是因为MPAndroidChart内部已经封装了我们需要的动态效果,这个我们之后会详细介绍实现的效果如下:设置 折线图样式(折线,图例,坐标轴等) void原创 2015-12-28 22:46:23 · 1787 阅读 · 0 评论 -
[MD]模仿百度手机助手动态折线图/MPAndroidCharts实现(二)
上一篇文章[MD]模仿百度手机助手动态折线图/MPAndroidCharts实现(一) 我们介绍了使用MPAndroidCharts实现折线图的动画,其实就是使用开源库提供的AnimateX方法进行构现,针对百度手机的动态折线图,其实是有个知识点是我们忽略的,在看会百度的效果我们发现,其实X轴只显示最后的3个点,这个可以怎么实现呢,嘿嘿,这个就是我们今天要说的,先看看我们实现的效果:原创 2015-12-28 23:14:00 · 931 阅读 · 0 评论 -
简单的手电筒程序(基于系统驱动节点)
上一篇文章 简单的手电筒程序(基于Camera类实现) 介绍了通过Camera类进行Flash操作,但是通过camera接口可能会有下面两个问题: 1. 因为是间接使用camera接口,所以时间上会有延时 ;2. 进行Camera相关操作,耗电会比较大。下面我们介绍另外一种方法,通过操作驱动节点进行操作,控制闪关灯亮灭。我使用的手机是三星G5309W,节点文件为/sys/class/cam原创 2015-06-15 09:24:02 · 1646 阅读 · 0 评论