Android
文章平均质量分 86
刘楼主
这个作者很懒,什么都没留下…
展开
-
解决 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8
解决新建一个AndroidStudio出现的 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8的问题原创 2022-07-16 17:34:22 · 29751 阅读 · 5 评论 -
源码分析--Glide源码 三 Glide的缓存
写在前面对于一个应用来讲所需要的图片不可能总是来自他自己的apk包中,总会有一些实时的图片来自于网络、服务器中,而为了流量、加载速度等方面的考虑,我们做不到每一次都是从网络中下载,为了解决这个问题,我们提出了缓存这个概念。如果你发现本文中有任何错误,请在评论区留言或者私信我,我会第一时间改正,谢谢!0 图片的三级缓存对于图片来讲,缓存是十分有必要的,在Android的发展史中,图片的缓存慢慢分成了三级。内存缓存 本地缓存 网络相对具体的可以参看这篇文章:三级缓存1 Glide中的内存缓存相比原创 2020-06-03 23:52:33 · 358 阅读 · 0 评论 -
源码分析--Glide源码 加载图片 二 into 网络下载图片的过程
上一篇博文中讲了with,load的过程,因为大部分都是初始话,所以总的来讲还是比较好理解的,这篇博文讲的是into的过程,这个过程就会用到前两个步初始话的对象,这一步也是Glide的核心、难点所在。intoGlide.with(MainActivity.this).load(s).into(imageView);传入的一般都是ImageView,进入到into源码中看一下//DrawableRequestBuilder.javapublic Target<GlideDrawable>原创 2020-06-01 22:42:28 · 334 阅读 · 0 评论 -
源码分析--xutil3 网络源码分析
这边查找的是同步请求的post方法(异步请求的方法也类似,最终同步异步都是会调用到同一块代码),流程如下public <T> T postSync(RequestParams entity, Class<T> resultType) throws Throwable { return this.requestSync(HttpMethod.POST, enti...原创 2020-04-26 15:56:02 · 203 阅读 · 0 评论 -
开发中遇到的问题-自定义viewgroup width match_parent失效
自定义viewgroup 通过 LayoutInflater.from(context).inflate(R.layout.***, null) 生成的子布局width属性设置为match_parent之后,发现实际的效果并没有铺满全屏原因是这个方法没有传入父布局,所以layout中的match_parent都失效了。两种思路解决问题:第一种方法 调整LayoutInflate...原创 2020-01-08 14:05:58 · 801 阅读 · 0 评论 -
开发中遇到的问题-AppCompatTextView在ListView,GridView中使用自适应字体大小出现的问题
由于所需要展示内容长端不固定,所以在使用普通的TextView进行展示的过程中,会出现文本换行或者显示不全的问题。为了解决这个问题,我采用了AppCompatTextView这个官方推荐的控件。具体的使用方法本文不讲解,需要的可以查看https://blog.csdn.net/zhangphil/article/details/79942428由于我是在listView中使用这个控件,...原创 2019-11-07 16:37:01 · 688 阅读 · 0 评论 -
开发中遇到的问题-Android换肤库ThemeSkinning替换皮肤库后 皮肤库不生效的问题
项目中实现了换肤的功能,现在采用的ThemeSkinning这个开源框架,github地址是 https://github.com/burgessjp/ThemeSkinning 在集成完之后的测试过程中发现一个问题,我把assets下面的皮肤库同名替换之后,发现新增的内容没有显示出来。程序还是采用的老的皮肤库的资源。 在看过框架的源码之后,发现框架是...原创 2019-08-19 19:24:57 · 501 阅读 · 0 评论 -
源码解析-AsyncTask sDefaultExecutor解析
上篇博文我們一起查看了AsyncTask的执行流程,但是由于篇幅的原因,我们没有对AsyncTask的默认启动方式(sDefaultExecutor)进行解析。那么,这篇博文我们对sDefaultExecutor进行解析。相关博文Android基础-AsyncTask基本使用源码解析-AsyncTask源码解析我们先回顾一下在上篇博文中的内容,再启动AsyncTask的时候我...原创 2019-07-27 17:13:59 · 726 阅读 · 0 评论 -
源码解析-AsyncTask源码解析
在之前的博客,我们分析了Handler的源码,在我看来Handler的源码只要理清了流程还是比较简单的。而这次要讲解的AsyncTask的源码我自认为会比Handler稍微复杂一点,我们今天一起来了解一下。在了解AsyncTask前,你需要先了解以下内容:1.线程池2.AsyncTask的基本使用的结构3.Handler的基本使用好,我们开始进入正题,还是拿我们之前举的那个例子...原创 2019-07-26 02:08:08 · 193 阅读 · 0 评论 -
问题解答-AsyncTask问题汇总及解答
本篇博文部分由本人所写,部分由网友总结,如有纰漏,请留言我将尽快调整,谢谢!AsyncTask机制AsyncTask主要由两个线程池和一个Handler组成。AsyncTask对象在初始化的过程中,分别初始化了Handler,WorkerRunnable,FuturaTask三个对象,这个Handler是用来处理消息的(回调oncancel,onPostExecute,onProg...原创 2019-07-30 22:18:09 · 426 阅读 · 0 评论 -
问题解答-Handler问题汇总及解答
在上篇博文我讲解了handler的源码,部分的细节由于篇幅的原因没有办法在上一篇讲解,我放在这里一起讲解。问题:1.looper是个死循环为什么不会堵住线程?在应用的启动的main方法public static void main(String[] args) { ... Environment.initForCurrentUser(); ...原创 2019-07-21 20:58:12 · 322 阅读 · 0 评论 -
Android基础-AsyncTask基本使用
本来写一篇AsyncTask的源码解析的,后来发现AsyncTask的使用比handler要复杂一些。记得刚入行的时候,使用异步任务我一直觉得比较复杂,所以我认为AsyncTask中的使用及参数还是有必要解释一下。那么我们先了解一下他的基本使用及参数,具体的源码我将在之后的博客在进行解析。不说多余的废话,先上代码 AsyncTask task = new AsyncTask...原创 2019-07-23 18:10:11 · 1907 阅读 · 0 评论 -
开发中遇到的问题-自定义viewGroup内容不显示
最近在把一个之前写的一个界面封装成一个viewGroup的过程中发现了一个问题,viewgroup里面的 内容始终没有显示出来,在百度了几个小时之后,发现了问题出在那里。一开始我认为这个控件不需要支持内边距,所以没有重写onLayout以及onMeasure的方法。后来试了一下只有在onLayout以及onMeasure都重写了的情况下,ViewGroup的内容才会正常显示。下面是我的代码...原创 2019-07-23 16:02:57 · 2585 阅读 · 0 评论 -
让gradle.properties中的参数全局获取
环境 AS 3.2.1----------------------------------------------------------首先,我们在gradle.properties定义一个参数test = hello我们要让build.gradle中能获取到,很简单,只需要 test.toString() 就能获取到gradle.properties中定义的参数...原创 2019-07-12 00:33:00 · 3372 阅读 · 0 评论 -
PhotoView的方法分享(代码设置缩放度,息屏之后缩放度不重置)
最近两天看了研究了一下大热的照片缩放控件开源框架的源码。根据项目上面的要求找到了几个方法,看着网上好像没有人分享这一块,索性把这几个方法贴出了分享一下。 本文有些地方可能会有问题,请大佬指正。---------------------------------------------------------------------------------------...原创 2019-07-11 14:05:11 · 1290 阅读 · 0 评论 -
AS 'gradle' 不是内部或外部命令,也不是可运行的程序 或批处理文件。(配置gradle环境变量)
在Terminal中,输入命令 gradle 命令之后,发现AS提示以下信息 'gradle' 不是内部或外部命令,也不是可运行的程序 或批处理文件。突然想起来公司的电脑环境变量好像还没有配置,本着偷懒的原则百度了一下找了两篇博客,发现好像都有点问题,索性自己花点时间记录一下;环境win7;AS 3.2.1 ;gradle 4.6-------------------...原创 2019-06-27 14:58:00 · 8876 阅读 · 2 评论 -
art 与dvm区别
本片文章重点参考《Android进阶解密》art在4.4时候发布的代替dvm的虚拟机,在4.4时默认采用的还是dvm,但是也可以选择art。然而在5.0以上的版本,Android默认采用了art区别有以下几点1.art采用了aop技术,安装程序时,将字节码预先编译成机器码并存储在本地,这样应用程序可以不再次编译后才能启动程序(类似srollview一次性全加载完)。dvm则...原创 2019-06-23 03:01:03 · 1041 阅读 · 0 评论 -
dvm 与 jvm区别
本片文章重点参考《Android进阶解密》1.基于架构不同jvm 基于栈,需要去栈中读取数据,需要的指令多,效率慢(栈是内存上面的一段连续的存储空间)dvm是基于寄存器(寄存器是CPU上面的一块存储空间),没有类似jvm的栈操作指令(大量的出入栈打的指令)2.执行的字节码不同jvm是把java类编译成一个或者多个的.class文件,然后打包成jar文件的。dvm在jvm的基...原创 2019-06-23 02:58:42 · 1841 阅读 · 0 评论 -
Andorid 使用so包的流程
上一篇文章写道了如何自己生成一个so包所以这篇文章讲一下怎么我们自己生成的so包第一步 新建一个项目第二步 配置工程build.gradle 中添加sourceSet第三步 将so包放入工程第四部 新建一个与前一个工程native方法包名类名方法名一样的类最后在activity中调用输出结果demo 地址https://do...原创 2019-04-13 12:57:36 · 908 阅读 · 0 评论