自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (4)
  • 收藏
  • 关注

原创 解决 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 28397 5

原创 Glide 加载webp动图实战(解决图片每帧间隔过长,动图单次播放,二次播放动图时首帧是动图最后一帧的问题)

零、前言最近接了一个需求,要在某个地方加上动图的特效,最后方案确定下来有两种实现的方式一、lottie动画来展示二、类gif动图的方式来展示考虑到时间的成本,优先使用类gif的方式来实现。主要是原因第三方图片加载框架已经封装好了一套完整的图片展示的流程,包括图片下载,展示,回收,缓存等。我们直接进行调用即可,但是由于ui给出的动图是webp格式的,所以在使用过程中出现挺多棘手的问题,好在最后找到原因并解决。一、具体的实现代码添加...

2022-05-22 01:13:05 6617 3

原创 Attribute “layout_anchorGravity“ already defined with incompatible format.

在整理一个老项目替换aar包的build过程中发现报了Attribute "layout_anchorGravity" already defined with incompatible format.这个问题问题进一步发现可能是design包的引用出了问题使用gradlew命令输出工程依赖的信息./gradlew dependencies > dependence.txt发现确实如此,项目中有23,27两个版本最后在主工程里面强制规定死版本解决这个问题configuration

2022-03-08 11:17:29 289

原创 Mac cannot open terminal Fail to start...

最近换了mac,是新芯片m1的那款,在使用过程中出现了几个坑,写篇文章记录一下。由于正式版本的到现在为止还没有更新m1版本的AndriodStudio,所以我一直用的都是开发的预览版本进行日常的开发。https://developer.android.google.cn/studio/archive 预览版本我下了3个分别是在开发的过程中还是出现了几个小问题 ,Arctic Fox版本两个都有一个问题,无...

2021-07-10 20:20:20 621

原创 nodejs环境的安装与踩坑

nodejs 安装推荐这个https://www.cnblogs.com/coder-lzh/p/9232192.htmlnrm ls 命令报错http://www.qishunwang.net/news_show_38906.aspxconst NRMRC = path.join(process.env.HOME, '.nrmrc');替换成 const NRMRC = path.join(process.env[(process.platform == 'win32...

2021-06-08 15:08:19 177

原创 git使用ssh方式生成密钥clone代码及踩坑

之前一直使用的是http的方式进行clone下载源码,最近一个工程需要自动化编译,过程中发现一直被拒绝了,仔细的看了一下发现是采用的ssh的方式进行源码的clone。调整的过程中踩了几个小坑,花了几个小时时间。记录一下防止再犯。首先要确定自己的信息配置的正确(特别是邮箱,最好和你目标网站用的邮箱要一致)git config --global --list如果不对的话,可以通过以下方式调整git config --global user.name "用户名" git config --glob

2021-06-07 18:10:30 895

原创 源码分析--Picasso into流程简析

很长时间没更新博文了,这里随便更新一个前段时间看的Picasso的源码,这里只简要的描述了一下大概的流程,想要加深印象还是建议读者自己去看一下具体的源码,这个框架的源码并不是很难。如果发现文章有错误,可以在评论或者私信指出,我会加以改正。requestCreatorpublic void into(ImageView target) { into(target, null); } public void into(ImageView target, Callback callbac

2021-04-09 11:24:21 115 1

原创 flutter报错 flutter can not clear a fixed-length list

最近有点时间,后知后觉的学了一下Flutter。Flutter的语法有点类似与java,但是细节不同于java,在使用过程出现了该问题在对一个List错误的初始化之后就会出现这个问题。具体是List<ArticleDataDataData> _articleDataList = new List(0);这样初始化之后的结果是创建了一个固定长度的list,在对这个list进行重新赋值(改变原来长度)之后就会报这个错误调整list的初始化方法就可以避免这个错误List

2020-09-18 22:42:19 1016

原创 源码分析--Glide源码 三 Glide的缓存

写在前面对于一个应用来讲所需要的图片不可能总是来自他自己的apk包中,总会有一些实时的图片来自于网络、服务器中,而为了流量、加载速度等方面的考虑,我们做不到每一次都是从网络中下载,为了解决这个问题,我们提出了缓存这个概念。如果你发现本文中有任何错误,请在评论区留言或者私信我,我会第一时间改正,谢谢!0 图片的三级缓存对于图片来讲,缓存是十分有必要的,在Android的发展史中,图片的缓存慢慢分成了三级。内存缓存 本地缓存 网络相对具体的可以参看这篇文章:三级缓存1 Glide中的内存缓存相比

2020-06-03 23:52:33 218

原创 源码分析--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 275

原创 源码分析--Glide源码 加载图片 一 with与load

写在前面有一段时间没有写过博客了,中间了看了一些杂七杂八的东西,也过了一部分的面试题,顺带提一句面试题我都是在鸿洋的https://www.wanandroid.com/ 看的,里面分类很多也比较的全,建议收藏打开百度搜索Gilde源码会出现几百万的搜索结果,但是我为什么还要再写这篇博客呢?第一 可以给后来的人指路。第二 可以都在哪怕是复述的时候,提高自己表达沟通的能力,第三 在加强自己的理解,哪怕是后面忘了也可以通过这篇文章在快速的回想起代码中的一切。这三点来说 第一点反而是最小的一点,重点在第二

2020-06-01 04:02:22 802 1

原创 kotlin---使用协程请求网络

kotlin出来也已经有好长一段时间了,作为google官方指定唯一亲儿子,作为Android开发也有必要去了解一下。(真的学不动了T.T)作为kotlin区别去java的独有特性---协程,在很多Android开发工程师刚接触kotlin时往往都是一头雾水,毕竟协程的使用区别于我们习惯采用的handler,AsyncTask,rxjava。网上的教程有很多,我这两天看也是十分挣扎,看了两天终...

2020-04-26 16:41:32 1044 2

原创 源码分析--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 179

原创 杂谈-View的生命周期

原文:https://blog.csdn.net/SEU_Calvin/article/details/72855537我觉得写得很好,有几个方法我之前用过,但是仅限于用过--------------------------------------------------------------------------------------------------------------...

2020-04-16 11:18:46 203

原创 问题汇总-Aspectjx

最近研究了一下埋点技术 使用的是Aspectjx 框架github:https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx/使用的过程中还是遇到了几个问题还是比较麻烦的,在这里mark一下具体的使用文章可参考:https://blog.csdn.net/eclipsexys/article/detai...

2020-04-14 16:24:41 1095

原创 rxjava2 源码分析 一

最简单的流程Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(@NonNull ObservableEmitter<Integer> e) throws Exception { ...

2020-04-09 18:19:27 87

原创 okhttp3 源码简析

简析,简析!核心是以下代码 @Override protected void execute() { boolean signalledCallback = false; try { Response response = getResponseWithInterceptorChain(); if (retryAndFollowUpIn...

2020-04-03 11:00:37 147

原创 开发中遇到的问题--cannot resolve symbol Androidjunit4(espresso)

最近闲来无事看了一下 espresso 这个ui测试框架,但是发现报了 cannot resolve symbol Androidjunit4 这个问题,如图断断续续 折腾了一个了一个上午怎么也弄不好,后来发现导入以下包,Sync一下后正常,mark一下 // Android runner and rules support androidTestCompile 'com.a...

2020-03-25 16:10:32 2661 1

原创 开发中遇到的问题-自定义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 731

原创 开发中遇到的问题-AppCompatTextView在ListView,GridView中使用自适应字体大小出现的问题

由于所需要展示内容长端不固定,所以在使用普通的TextView进行展示的过程中,会出现文本换行或者显示不全的问题。为了解决这个问题,我采用了AppCompatTextView这个官方推荐的控件。具体的使用方法本文不讲解,需要的可以查看https://blog.csdn.net/zhangphil/article/details/79942428由于我是在listView中使用这个控件,...

2019-11-07 16:37:01 618

原创 开发中遇到的问题-Android换肤库ThemeSkinning替换皮肤库后 皮肤库不生效的问题

项目中实现了换肤的功能,现在采用的ThemeSkinning这个开源框架,github地址是 https://github.com/burgessjp/ThemeSkinning 在集成完之后的测试过程中发现一个问题,我把assets下面的皮肤库同名替换之后,发现新增的内容没有显示出来。程序还是采用的老的皮肤库的资源。 在看过框架的源码之后,发现框架是...

2019-08-19 19:24:57 418

原创 问题解答-AsyncTask问题汇总及解答

本篇博文部分由本人所写,部分由网友总结,如有纰漏,请留言我将尽快调整,谢谢!AsyncTask机制AsyncTask主要由两个线程池和一个Handler组成。AsyncTask对象在初始化的过程中,分别初始化了Handler,WorkerRunnable,FuturaTask三个对象,这个Handler是用来处理消息的(回调oncancel,onPostExecute,onProg...

2019-07-30 22:18:09 390

原创 源码解析-AsyncTask sDefaultExecutor解析

上篇博文我們一起查看了AsyncTask的执行流程,但是由于篇幅的原因,我们没有对AsyncTask的默认启动方式(sDefaultExecutor)进行解析。那么,这篇博文我们对sDefaultExecutor进行解析。相关博文Android基础-AsyncTask基本使用源码解析-AsyncTask源码解析我们先回顾一下在上篇博文中的内容,再启动AsyncTask的时候我...

2019-07-27 17:13:59 669

原创 源码解析-AsyncTask源码解析

在之前的博客,我们分析了Handler的源码,在我看来Handler的源码只要理清了流程还是比较简单的。而这次要讲解的AsyncTask的源码我自认为会比Handler稍微复杂一点,我们今天一起来了解一下。在了解AsyncTask前,你需要先了解以下内容:1.线程池2.AsyncTask的基本使用的结构3.Handler的基本使用好,我们开始进入正题,还是拿我们之前举的那个例子...

2019-07-26 02:08:08 140

原创 Android基础-AsyncTask基本使用

本来写一篇AsyncTask的源码解析的,后来发现AsyncTask的使用比handler要复杂一些。记得刚入行的时候,使用异步任务我一直觉得比较复杂,所以我认为AsyncTask中的使用及参数还是有必要解释一下。那么我们先了解一下他的基本使用及参数,具体的源码我将在之后的博客在进行解析。不说多余的废话,先上代码 AsyncTask task = new AsyncTask...

2019-07-23 18:10:11 1878

原创 开发中遇到的问题-自定义viewGroup内容不显示

最近在把一个之前写的一个界面封装成一个viewGroup的过程中发现了一个问题,viewgroup里面的 内容始终没有显示出来,在百度了几个小时之后,发现了问题出在那里。一开始我认为这个控件不需要支持内边距,所以没有重写onLayout以及onMeasure的方法。后来试了一下只有在onLayout以及onMeasure都重写了的情况下,ViewGroup的内容才会正常显示。下面是我的代码...

2019-07-23 16:02:57 2459

原创 问题解答-Handler问题汇总及解答

在上篇博文我讲解了handler的源码,部分的细节由于篇幅的原因没有办法在上一篇讲解,我放在这里一起讲解。问题:1.looper是个死循环为什么不会堵住线程?在应用的启动的main方法public static void main(String[] args) { ... Environment.initForCurrentUser(); ...

2019-07-21 20:58:12 296

原创 源码解析-Handler源码全面解析

本篇文章是对Handler的源码分析写在前面对于一名开发者,阅读源码是一项必修的课程。从源码的过程中,我们可以了解到设计模式与源代码开发者的开发习惯。而在阅读源码的过程中,我一直秉承着郭霖大神的那句话“抽丝剥茧、点到即止”,我们没有必要完全深入每一行代码,通常我们可能只需要知道这一行代码的作用就行了。如果本文出现错误,请及时在评论中提醒我,谢谢!分析的过程建议没有看过的同学可以...

2019-07-20 03:09:26 821 2

原创 Git的命令汇总

git init 初始话git add . 添加代码到缓存git commit -m "注释"git remote add origin (xxxx.git) 关联githubgit push -u origin master 提交代码git pull --rebase origin master 下载代码git clone xxxx 所有分支的代码git...

2019-07-12 00:38:30 63

原创 让gradle.properties中的参数全局获取

环境 AS 3.2.1----------------------------------------------------------首先,我们在gradle.properties定义一个参数test = hello我们要让build.gradle中能获取到,很简单,只需要 test.toString() 就能获取到gradle.properties中定义的参数...

2019-07-12 00:33:00 3143

原创 PhotoView的方法分享(代码设置缩放度,息屏之后缩放度不重置)

最近两天看了研究了一下大热的照片缩放控件开源框架的源码。根据项目上面的要求找到了几个方法,看着网上好像没有人分享这一块,索性把这几个方法贴出了分享一下。 本文有些地方可能会有问题,请大佬指正。---------------------------------------------------------------------------------------...

2019-07-11 14:05:11 1214

原创 AS 'gradle' 不是内部或外部命令,也不是可运行的程序 或批处理文件。(配置gradle环境变量)

在Terminal中,输入命令 gradle 命令之后,发现AS提示以下信息 'gradle' 不是内部或外部命令,也不是可运行的程序 或批处理文件。突然想起来公司的电脑环境变量好像还没有配置,本着偷懒的原则百度了一下找了两篇博客,发现好像都有点问题,索性自己花点时间记录一下;环境win7;AS 3.2.1 ;gradle 4.6-------------------...

2019-06-27 14:58:00 8552 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 985

原创 dvm 与 jvm区别

本片文章重点参考《Android进阶解密》1.基于架构不同jvm 基于栈,需要去栈中读取数据,需要的指令多,效率慢(栈是内存上面的一段连续的存储空间)dvm是基于寄存器(寄存器是CPU上面的一块存储空间),没有类似jvm的栈操作指令(大量的出入栈打的指令)2.执行的字节码不同jvm是把java类编译成一个或者多个的.class文件,然后打包成jar文件的。dvm在jvm的基...

2019-06-23 02:58:42 1660

原创 jvm垃圾回收算法

垃圾回收算法分为以下几种:1.标记回收对象被引用1次,他的index就+1,每次gc看到的index为0就回收缺点:相互引用的对象会一直存在,需要维持index2.标记清除分为两步:查找,回收查找采用可达性查找法(从根节点出发遍历,所有不可达的认为是垃圾),未被被查找到标记的对象认为是垃圾,将其直接删除。缺点:会产生大量的垃圾碎片,有这些垃圾碎片之后,无法在进行大...

2019-06-22 13:56:09 92

原创 java对象在虚拟机中的生命周期

本片文章取自《Android进阶解密》在java对象被类加载器加载到虚拟机中后,java对象在java虚拟机中有7个阶段1.创建阶段(created)步骤:(1)为对象分配存储空间(2)构造对象(3)从超累到子类对static成员进行初始化(4)递归调用超类的构造方法(5)调用子类的构造方法2.应用阶段(In use)当对象被创建,并分配给变量赋值时,...

2019-06-22 13:54:27 218

原创 Andorid 使用so包的流程

上一篇文章写道了如何自己生成一个so包所以这篇文章讲一下怎么我们自己生成的so包第一步 新建一个项目第二步 配置工程build.gradle 中添加sourceSet第三步 将so包放入工程第四部 新建一个与前一个工程native方法包名类名方法名一样的类最后在activity中调用输出结果demo 地址https://do...

2019-04-13 12:57:36 851

原创 初识JNI开发

最近接到一个任务,叫我将项目上的压缩图片的方法优化一下。我就吭哧吭哧的找,找了几个开源库,发现效果也就那样,最后发现有个方法是调用jni来进行压缩,就这样我开始了的第一行JNI代码。-----------------------------------------------------------------------------------------------------...

2019-04-12 02:02:49 137

原创 在eclipse环境下使用TabLayout

之前账号被盗了,这篇文章是重发---------------------------------------------------------这两天工作上的东西比较少,索性拿一些空余的时间来研究一些东西。 由于做的东西经常被吐槽说是很丑,就研究起了androidmaterial design 中的各种控件。 虽然说Android现在主流的是用studio...

2018-11-22 16:11:08 631 1

Android 调用so包的方法

文章链接 https://blog.csdn.net/just_hu/article/details/89280504

2019-04-13

给初学者的JNIDemo

给初学者jnidemo 文章链接https://blog.csdn.net/just_hu/article/details/89223339

2019-04-13

在eclipse环境下使用TabLayout 的demo

在eclipse环境下使用TabLayout 的demo 。 对应的博文http://blog.csdn.net/just_hu/article/details/75299711

2017-10-23

Android 点击事件demo

一个简单的Android的点击事件的Demo。通过这个Demo可以更加清楚的了解点击事件的分发,点击事件的处理(注意 Demo采用的eclipse开发)

2017-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除