
Android
文章平均质量分 87
漫漫蜗牛路
简直最大的敌人是复杂,如果把复杂事情简单了,就是巨大进步!
展开
-
Gradle 和 Gradle Wrapper 到底是什么关系。
Gradle Wrapper我们推荐使用 Gradle Wrapper 执行gradle 构建,(后面简称Wrapper).Wrapper 实质上是一个脚本,这个脚本使用申明版本的gradle 执行构建任务。如果本地没有Wrapper 中申明的gradle 版本,Wrapper会先下载它。这样开发者不必必须下载和项目指定版本相同的gradle,就可以完成构建。从而为公司节约时间、节约成本。W...原创 2019-10-31 16:36:56 · 837 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的<4> -- 使用Annotaion Processing Tool 解析注解
概述注解的解析可以通过反射,但反射的性能较低。所以在移动平台上,如安卓端使用,那是得不偿失的。那么Android 端如何解析注解的呢?Android 端使用 apt 解析注解。然后使用自动生成的代码实现需要的逻辑。自定义注解系列文章那些高端、优雅的注解是怎么实现的<0> – 注解的分类那些高端、优雅的注解是怎么实现的 <1> – 自定义注解语法那些高端、优雅的注...原创 2019-10-17 19:34:54 · 118 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的<0> -- 注解的分类
概述此文仅仅讲解注解的分类,让你对注解有个大概的认识,形成一个概念。如果你对注解比较熟悉或者不想看这么浅显的东西,可以直接下一篇。此系列文章,我将从最基础的分类开始,一直到最后完成一个自定义实战项目为止。循序渐进,图文结合,希望既清晰白话,又经济实用。但限于本人能力有限,不足之处,烦请指出。另本系列文章多处借鉴刘果国老师的文章,再次感谢老师的辛勤付出。自定义注解系列文章那些高端、优雅的注解...原创 2019-10-17 19:33:14 · 101 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的 <1> -- 自定义注解语法
概述使用元注解来定义我们自己的注解,就是自定义注解。一个自定义注解可能像下面这样@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Message { String decr() defau...原创 2019-10-17 19:32:03 · 145 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的<2> -- 解析注解q
概述通过反射获取类、方法或成员上的 运行时 注解信息,从而实现动态控制程序运行逻辑,这也是注解的魅力所在。当然反射是比较影响性能的一种方式,在手机端是不适用的。但手机端也有很多注解类框架,那么他们是怎么实现的呢?那就是使用 APT 解析 编译时 注解。在编译时会通过注解标示来动态生成一些 Java 代码或者 xml,而在运行时,注解已经不存在了,它会依靠编译时生成的 Java 代码来实现我们需...原创 2019-10-17 19:30:20 · 121 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的<3> - 可继承性@Inherited
这是一个看起来让人迷糊的特性,所以我拿出一个章节来说明,然而它并没有那么重要。自定义注解系列文章那些高端、优雅的注解是怎么实现的<0> – 注解的分类那些高端、优雅的注解是怎么实现的 <1> – 自定义注解语法那些高端、优雅的注解是怎么实现的<2> – 解析注解那些高端、优雅的注解是怎么实现的<3> - 可继承性@Inherited那些...原创 2019-10-17 19:28:53 · 121 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的<5> --使用Annotaion Processing Tool 自定义注解
一:概述上一篇我们用普通的方式完成了披萨店的代码,下面我们用注解的方式去实现,彻底解决这个需求的痛点。自定义注解系列文章那些高端、优雅的注解是怎么实现的<0> – 注解的分类那些高端、优雅的注解是怎么实现的 <1> – 自定义注解语法那些高端、优雅的注解是怎么实现的<2> – 解析注解那些高端、优雅的注解是怎么实现的<3> - 可继承性...原创 2019-10-17 19:26:58 · 184 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的<6> --自定义持久层框架-类 Hibernate
概述上一篇我们用apt,实现了一个自动生成工厂类的实例。这篇我们使用反射的方式去实现一个持久层框架,当然只是核心代码,并不是可以直接拿来使用的商业项目 ,类似于 Hibernate。自定义注解系列文章那些高端、优雅的注解是怎么实现的<0> – 注解的分类那些高端、优雅的注解是怎么实现的 <1> – 自定义注解语法那些高端、优雅的注解是怎么实现的<2>...原创 2019-10-17 19:23:31 · 115 阅读 · 0 评论 -
那些高端、优雅的注解是怎么实现的--总目录
概述这是一系列文章,通过java注解的详细解析,期望您以后看到注解不在感到神秘。不管是现在后台开发的Spring家族,还是移动端的各种框架。如大神JakeWharton的butterknifte、Dagger2等 。 注解随处可见,所以我们必须理解学会注解。介绍首先我们会去搞清楚什么是注解?注解由那些元素组成?怎么去定义一个注解?注解为什么那么神奇的功效?它是怎么做到的?带着这些疑问我们从最...原创 2019-10-17 19:17:46 · 101 阅读 · 0 评论 -
HttpURLConnection 网络请求最佳实践
概述在Android开发中网络请求是最常用的操作之一, Android SDK中对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口:标准Java接口(java.NET) —-HttpURLConnection,可以实现简单的基于URL请求、响应功能;Apache接口(org.appache.http)—-HttpClient,使用起来更方面更强大。但在android AP...原创 2019-10-17 19:15:11 · 472 阅读 · 0 评论 -
bug日记-单例模式下的监听器应该怎么设置?
概述没错,这是一个bug引发的思考。其实今天这个标题感觉很难取,可能词穷,也可能语文体育老师教的。不会归纳总结。现在,开始说正事。镇楼的妹子要漂亮代码是枯燥的,那么。。。。问题描述一般Retrofit、OkHttp 大家都会封装为单例模式。在我司的一个项目中OkHttp中有个文件上传进度拦截器。拦截器的构造函数里有个文件上传进度监听器。因为是单例模式,那么很显然 OkHttp只会初始化...原创 2019-10-13 00:29:25 · 154 阅读 · 0 评论 -
Android attr format属性详解 (自定义属性详
下面再对attr的format的类型进行一下说明。如下图:booleanboolean表示attr是布尔类型的值,取值只能是true或false。stringstring表示attr是字符串类型。integerinteger表示attr是整数类型,取值只能是整数,不能是浮点数。floatfloat表示attr是浮点数类型,取值只能是浮点数或整数。fractionfracti...原创 2019-10-13 00:22:54 · 1471 阅读 · 0 评论 -
五分钟学会 Material Design之实现上滑隐藏ToolBar,TabLayout
一:目的效果1.这个时候上图,不废话二:你需要了解的概念1. **CoordinatorLayout **该控件是Design包下的一个控件,也是Design包中最复杂、功能最强大的控件:那么它的神奇之处在哪里? 它是众多子view的领导者,能组织view之间互相协作的一个ViewGroup。CoordinatorLayout使得子view之间知道了彼此的存在,...原创 2019-10-13 00:15:26 · 170 阅读 · 0 评论 -
Android attr format属于详解 (自定义属性详解)
Android attr format属性详解 (自定义属性详解)下面再对attr的format的类型进行一下说明。如下图:booleanboolean表示attr是布尔类型的值,取值只能是true或false。stringstring表示attr是字符串类型。integerinteger表示attr是整数类型,取值只能是整数,不能是浮点数。f...原创 2019-10-13 00:12:53 · 310 阅读 · 0 评论 -
Android Attr、Style和Theme详解
关于Attr、Style和Theme详解本文主要参考以下三篇博客的内容,感谢三位的分享1.Attr、Style和Theme详解2.一些关于style和attr的使用问题3.Android中View自定义XML属性详解以及R.attr与R.styleable的区别一:定义及基本使用方法Attr:属性,风格样式的最小单元;Style:风格,它是一系列Attr的集合用以定义...原创 2019-10-13 00:09:09 · 792 阅读 · 0 评论 -
五分钟彻底理解启动模式(下篇): 启动模式完全解析
任务栈每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1-->Activity2-->Activity3,则任务栈为:四种启动模式standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;singleT...原创 2017-02-08 19:59:58 · 182 阅读 · 0 评论 -
五分钟彻底理解Android启动模式(上篇):任务栈和android-taskaffinity
启动模式还是比较难以理解的,虽然我尽量用最简单的方式来陈述,但原谅在下装逼功力有限,建议还是必须对着代码敲一遍一: Actiivity和TaskActivity属于哪个Task,由什么来决定的?Activity会一直在这个task中吗?如果不是又会到什么样的task中呢?这一切都可以在Activity的taskAffinity属性中找到答案,Activity的task...原创 2017-02-08 19:59:10 · 136 阅读 · 0 评论 -
“沉浸式状态栏”--完全理解沉浸模式
关于沉浸式状态栏一词的说法从何而来我们无从考证。但这确实是个错误的说法先引用官方的一段话。Immersive full-screen modeTo provide your app with a layout that fills the entire screen, the new SYSTEM_UI_FLAG_IMMERSIVE flag for setSystemUi...原创 2017-02-22 21:14:41 · 383 阅读 · 0 评论 -
五分钟快速掌握 IntelliJ IDEA 自定义注释模版(Mac)
一:概述IntelliJ IDEA 提供模版能为我们节约很多时间,类的注释,方法的注释很常用,并且相通性强。所以我们可以自定义相应的模版,方便使用。二:自定义类注释模版点击左上角IntelliJ IDEA ,然后在弹出菜单里选择 Preferences 选项。如下图image在打开的菜单中选择 Edit然后 File and code Templ...原创 2018-11-04 01:32:18 · 449 阅读 · 0 评论 -
五分钟了解 AndroidAnnotations 注解原理
五分钟了解 AndroidAnnotations 注解原理本文仅仅对 AndroidAnnotations 控件如何注入进行源码分析,并不是长篇大论的对整个框架进行分析。主要关注控件初始化,控件销毁。因为深入了解需要花费大量精力,产出却不一定足够大。需要的时候再带着问题去研究,才会收获甚丰,希望对你有帮助。一:控件初始化及@AfterViews 注解的方法调用1. 注解后自动...原创 2019-02-27 14:40:42 · 244 阅读 · 0 评论 -
Android ImageView ScaleType 可视指南
如果你像我一样,你真的,非常,非常好看。 但你也可能有点健忘。 因此,当需要在ImageView中缩放图像时,你可能已经忘记不同的ScaleType显示在屏幕上具体是什么样子。 因此,您需要在接下来的10-15分钟内构建并使用每种比例类型重建您的应用,以查看它们的外观。 然后你不可避免地忘记了其中两个之间的区别,并重新开始整个过程。 正如孩子们所说,“我得到了”。以下并排放置了所有...原创 2019-02-28 17:34:38 · 194 阅读 · 0 评论 -
学习安卓设备管理器锁屏、清除数据总结—DevicePolicyManager
一:设备管理器介绍:Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager,使用这个API你可以接管手机的应用权限,对手机做出很多大胆的操作,比如锁屏、恢复出厂设置、设置密码、强制清除密码,修改密码、设置屏幕灯光渐暗时间间隔等操作。二:设备管理器创建1.要调用DevicePolicyManager 必须有个设备管理器admin,那么第一原创 2015-10-17 23:08:37 · 2264 阅读 · 0 评论 -
Java finished with non-zero exit value 2 - Android Gradle bug的解决方案
我是在导入rxJava依赖的时候出现的这个问题。通过各种搜索后总算完美解决该问题,这里记录总结下。希望遇到同样问题的道友可以少走弯路。上正题可以通过下面两个方法中的一个得到解决1.多次引用导致的jar包冲突 比如用了依赖所有libs中的jar包。然后又单独依赖了libs中的jar 总之就是多次依赖导致的 jar包冲突2.修改Module 级别grale.原创 2016-08-20 22:18:26 · 331 阅读 · 0 评论