Android 应用
文章平均质量分 63
源码下载: https://github.com/nai-chen/AndroidBlog
假装你是大灰狼
移动端工程师
展开
-
Android Retrofit2 详解和使用
Retrofit是现在比较流行的网络请求框架,可以理解为okhttp的加强版,底层封装了okhttp。准确来说,Retrofit是一个RESTful的http网络请求框架的封装。因为网络请求工作本质上是由okhttp来完成,而Retrofit负责网络请求接口的封装。本质过程:App应用程序通过Retrofit请求网络,实质上是使用Retrofit接口层封装请求参数、HeaderUrl等信息,之后由okhttp来完成后续的请求工作。在服务端返回数据后,okhttp将原始数据交给Retrofit。转载 2024-01-13 13:19:24 · 953 阅读 · 0 评论 -
Android getLocalVisibleRect与 getGlobalVisibleRect方法
简单来说就是目标view在父view的映射,然后从屏幕左上角开始计算,保存到rect中,注意是父view,而不是屏幕,因为demo的父view)和屏幕宽高是一样的。只要这个View的左上角在屏幕中,它的的左上角坐标就一定是(0,0),如果View的右下角在屏幕中,它的右下角坐标就一定是(如果不在屏幕中,他的Rect数值就跟是一样的。转载 2023-11-20 16:02:58 · 862 阅读 · 0 评论 -
Android APP界面黑白化处理
的属性更改界面背景颜色,通过设置颜色过滤器更改画笔的色调、饱和度和亮度。考虑性能使用HardwareLayer(GPU内部的Buffer)对绘制的图形进行缓存。设置置灰,实现全局置灰效果。创建自己对应的层,并将自己绘制到层上。Android页面绘制流程一般分为。Android页面置灰。转载 2023-05-16 17:23:43 · 500 阅读 · 0 评论 -
Android Pdf第三方框架
导入AndroidPdfViewer在里面添加库布局文件引用PDFView为我们提供了以下几种读取文件的方法:主要方法其他方法github地址: https://github.com/barteksc/AndroidPdfViewer导入mupdf在里面添加库mupdf提供了解析代码, 读取pdf文件,把pdf转换成图片显示。是 MuPDF 为 Android 平台提供的查看器,它的代码可以通过 Git 下载得到:我们可以把作为一个模块拷贝到自己的项目中,直接使用原创 2022-09-23 18:04:22 · 8159 阅读 · 1 评论 -
Android OkHttp中添加https支持
基础知识感觉就是一堆有信誉的机构,说: 我们这些机构的公钥是可信的,我们下面的小弟当然也是可以信任的啦然后大家就去当人家小弟,就是可信的了….当然这里面有的大佬不高兴,就自己搞一套证书,比如12306Https中,值得注意的密钥有:服务器端的公钥和私钥客户端的随机密钥值得注意的是一个HTTPS请求实际上就是两次HTTP传输.1.客户端向服务器发起HTTPS请求,连接到服务器的443端口。2.服务端收到请求,向客户端发送自己的公钥3.客户端收到服务器公钥,开始验证证书的合法性,我们知道转载 2021-04-30 11:06:53 · 2702 阅读 · 0 评论 -
Android ProGuard技术详解
一. 简介ProGuard是一个开源的Java代码混淆器,在Android中一提起ProGuard,我们通常第一想到的是用来混淆代码的,其实它的功能并不仅限于此,有以下四个功能:(1)压缩(Shrink):侦测并移除代码中无用的类、字段、方法和特性(2)优化(Optimize):对字节码进行优化,移除无用的指令(3)混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段和方法进行重命名(4)预检(Preverify):在Java平台上对处理后的代码进行预检总结:Pro转载 2020-06-10 14:23:00 · 3390 阅读 · 0 评论 -
Android JavaOpet
Android/Java 框架常常会使用编译期注解, 而其中关键的一步是如何生成 Java 文件. JavaPoet 就是用来生成 Java 代码的一个 Java Library.基础概念首先, 让我们来看一个简单的 Java 文件:可以见, 一个 Java 文件由四部分组成。也就是我们要生成一个 java 文件, 就是要生成上述四部分内容。对应到 JavaPoet 中, 我们来看一张...转载 2020-01-14 16:29:38 · 590 阅读 · 1 评论 -
Android Volley完全解析
源码解析说起分析源码,那么应该从哪儿开始看起呢?这就要回顾一下Volley的用法了,还记得吗,使用Volley的第一步,首先要调用Volley.newRequestQueue(context)方法来获取一个RequestQueue对象,那么我们自然要从这个方法开始看起了,代码如下所示:public static RequestQueue newRequestQueue(Context cont...转载 2020-01-07 17:37:10 · 414 阅读 · 0 评论 -
Android Volley使用解析
Volley简介在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整。特点:自动调度网络请求支持多个并发的网络连接支持请求优先级可以取消单个或一系列请求易于定制,如自定义请求方式调试和跟踪工具使用场景:非常适合去进行数据量不大,但通信频繁的网络操作不适合大数据......转载 2020-01-07 15:54:36 · 1811 阅读 · 0 评论 -
Android OkHttp3架构分析
转载来源: https://www.jianshu.com/p/9deec36f2759在OkHttp3中,其灵活性很大程度上体现在,可以intercept其任意一个环节,而这个优势便是okhttp3整个请求响应架构体系的精髓所在:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PkLb5sZq-1578299871669)(1.webp)]在OkHttp3中......转载 2020-01-06 16:38:10 · 989 阅读 · 0 评论 -
Android Okhttp主流程源码分析
在OkHttp3中,其灵活性很大程度上体现在可以 intercept 其任意一个环节,而这个优势便是okhttp3整个请求响应架构体系的精髓所在,先放出一张主框架请求流程图,接着再分析源码。String url = "http://wwww.baidu.com";OkHttpClient okHttpClient = new OkHttpClient();final Request requ...转载 2020-01-06 15:27:44 · 583 阅读 · 0 评论 -
Android Okhttp3基本使用
I.简介HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接连接池减少请求延时透明的GZIP压缩减少响应数据的大小缓存响应内容,避免一些完全重复的请求当网络出现问题的时候OkHttp依然坚守自己的职责,它会...转载 2020-01-06 14:45:36 · 19864 阅读 · 0 评论 -
Android EventBus3.0源码解析
转载来源: http://liuwangshu.cn/application/eventbus/2-eventbus-sourcecode.html前言上一篇我们讲到了EventBus3.0的用法,这一篇我们来讲一下EventBus3.0的源码以及它的利与弊。1.构造函数当我们要调用EventBus的功能时,比如注册或者发送事件,总会调用EventBus.getDefault()来获取Ev...转载 2020-01-06 09:07:42 · 337 阅读 · 0 评论 -
Android EventBus3.0用法全解析
前言EventBus是一款针对Android优化的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,以及将发送者和接收者解耦。如果Activity和Activity进行交互还好说,如果Fragment和Fragment进行交互着实令人头疼,我们会使用广播来处理,但是使用广播稍显麻烦并且效率也不高,如果传递的数据是实体类需要序列化,那么很显然成本会有点...转载 2020-01-03 18:13:39 · 8528 阅读 · 0 评论 -
Android LeakCanary原理分析
概述在上一篇LeakCanary使用详细教程中,我们熟悉了LeakCanary的使用和初步描述了它的工作机制,这篇我准备从源码的角度去分析LeakCanary的工作原理;源码分析从上一篇中我们知道,LeakCanary在Appaction的初始化方式:@Overridepublic void onCreate() { super.onCreate(); if (LeakC...转载 2020-01-02 09:55:41 · 3713 阅读 · 0 评论 -
Android LeakCanary使用详细教程
导语在Android的性能优化中,内存优化是必不可少的点,而内存优化最重要的一点就是解决内存泄漏的问题,在Android的内存泄漏分析工具也不少,比如PC端的有:AndroidStudio自带的Android Profiler、MAT等工具;手机端也有,就是我们今天要介绍的LeakCanaryLeakCanary简介LeakCanary是Square公司为Android开发者提供的一个自......转载 2020-01-02 09:17:36 · 18988 阅读 · 1 评论 -
Android中使用AbstractProcessor在编译时生成代码
1. 概述在现阶段的Android开发中,注解越来越流行起来,比如ButterKnife,Retrofit,Dragger,EventBus等等都选择使用注解来配置。按照处理时期,注解又分为两种类型,一种是运行时注解,另一种是编译时注解,运行时注解由于性能问题被一些人所诟病。编译时注解的核心依赖APT(Annotation Processing Tools)实现,原理是在某些代码元素上(如类型、...转载 2019-12-24 16:58:54 · 1225 阅读 · 0 评论 -
Android TraceView分析日志
1. 记录日志有两种方式Debug类添加日志需要SD卡的读写权限。Debug.startMethodTracing("traceDemo")Debug.stopMethodTracing();调用命令获取文件到本地adb pull /sdcard/tracedemo.trace .使用Android Device Monitor打开tracedemo.trace文件。A......原创 2019-12-02 11:11:56 · 495 阅读 · 0 评论 -
Android Gradle打包
在Android Stdio中使用gradle打包相对来说比较容易,因为AS集成了gradle。只需在根目录下调用gradle assembleDebug命令就可在app\build\outputs\apk目录下看到新的apk文件。1. 添加签名签名配置,这个配置可以在buildTypes中被引用signingConfigs { commonConfigs { st...原创 2019-12-02 10:55:59 · 1529 阅读 · 0 评论 -
Android Ant打包
1. 编译环境的配置android和java的编译环境和ant工具的安装是必不可少的环节。配置文件ant.properties为了在不同的环境下能够顺利地进行编译,需要进行额外的配置,在项目目录下创建配置文件ant.properties。首先是android编译工具的选择。我们预留了sdk.dir这个变量是为了不同环境的编译,而exe和{exe}和exe和{bat}同样也是如此。也要用...原创 2019-12-02 10:48:47 · 457 阅读 · 0 评论 -
Android 多语言应用
1. 准备多语言资源分别在不同的values目录下创建strings.xml文件,并对字符串进行翻译。例如,我们使用简体中文为默认语言,并添加英语和繁体中文到项目中。2. 系统适配在设置里面选择不同的语言环境,APP会自动适配。3. 强制选择在Configuration里面设置locale,并且需要重新打开Activity才能生效。Resources res = getResou...原创 2019-11-27 17:59:09 · 457 阅读 · 0 评论 -
Android源码下载
1. 直接从官方下载新建一个用于存放下载脚本文件的目录 mkdir ~/bin PATH=~/bin:$PATH下载Repo脚本文件 curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo创建用于存放Android源代码的目...原创 2019-11-26 18:00:28 · 294 阅读 · 0 评论 -
Android Studio多Module应用
1. 创建Android库创建Module打开菜单【File】 -> 【New】 -> 【New Module…】选择Android Library输入Module name和Package name在app的Dependencies中添加依赖库2. DemoLib库在DemoLib中有一个工具类TimeFormat和自定义界面类CustomV...原创 2019-11-26 17:23:20 · 1491 阅读 · 0 评论 -
Android View截图
项目中经常会用到分享的功能,有分享链接也有分享图片,其中分享图片有的需要移动端对屏幕内容进行截取分享,说白了就是将view转成bitmap再到图片分享,还有一种情况是将不可见的view转成bitmap,这种view是没有直接显示在界面上的,需要我们使用inflate进行创建的view。第一...转载 2019-09-27 10:17:23 · 1127 阅读 · 1 评论 -
Android 单元测试之Robolectric
前言在博客Android 单元测试之PowerMockito,主要介绍PowerMockito的使用和对Java测试用例的强大支持。但对于Android app开发来说,写起单元测试很痛苦:一方面单元测试需要运行在模拟器上或者真机上,不仅麻烦而且缓慢;另一方面,一些依赖Android SDK的对象(如Act...转载 2019-07-05 17:11:27 · 10079 阅读 · 1 评论 -
Android 单元测试之PowerMockito
在博客Android 单元测试之Mockito中,主要介绍了Mockito测试框架和基本使用。在博客结束时,我们提出了一个问题,由于Mockito的局限性,对final、private、static等方法不能mock,那如何对这样的方法进行单元测试呢?我们是不是真的束手无策呢?肯定不是的啦,今天我们一起来学习...转载 2019-07-05 13:56:17 · 2006 阅读 · 1 评论 -
Android 单元测试之Mockito
在博客Android 单元测试之JUnit4中,我们简单地介绍了:什么是单元测试,为什么要用单元测试,并展示了一个简单的单元测试例子。在文章中,我们只是展示了对有返回类型的目标public方法进行了单元测试,但是对于返回类型为void的public方法,又是如何进行单元测试呢?往往是验证目标方法中的某个对象的...转载 2019-07-04 17:12:01 · 2053 阅读 · 1 评论 -
Android 单元测试之JUnit4
单元测试是什么首先我们来介绍一下什么是单元测试?可能有很多人经常会听到这个词并不感到陌生,那什么是单元测试呢,在Android中又是如何实践的呢,这个时候可能会感到困惑。从名字上看,单元测试就是参与项目开发的工程师在项目中为了测试某一个代码单元而写的测试代码,用于执行项目中的目标函数并验证其逻辑状态或者结果...转载 2019-07-03 16:44:56 · 2866 阅读 · 1 评论 -
Android 使用ShareUserId
一、Android系统回为每个应用分配一个唯一的UID,具有相同的UID的应用才能共享数据。两个应用通过ShareUID共享数据,需要相同的ShareUID之外还需要相同的签名才可以。在这种情况下他们可以互相访问私有数据,比如data目录,组件信息等。如果他们跑在同一个进...转载 2019-03-14 10:38:40 · 2020 阅读 · 2 评论 -
Android RSS订阅
1. RSS简介RSS即Really Simple Syndication,简易信息聚合。RSS是一种描述和同步网站内容的格式,用于与其他站点之间共享内容。RSS目前广泛用于晚上新闻。2. RSS文件格式RSS由一个channel元素及其子元素组成,包括item、title、link、description等。item元素是最重要的部分,可以包含多个,子元素包括title、link、des...原创 2019-03-07 20:22:35 · 2243 阅读 · 1 评论 -
Android windowSoftInputMode属性详解
首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。android:windowSoftInputMode属性一共有9个取值,分别是:stateUnspecified,stateUnchanged,stateH...转载 2019-02-22 10:38:06 · 1338 阅读 · 0 评论 -
Android 常见的内存泄漏以及解决方案(二)
转载来源: https://blog.csdn.net/seu_calvin/article/details/523510620. 前言上一篇常见的内存泄漏以及解决方案(一) 中已经对部分可能会引发内存泄漏的情况进行了阐述,此篇将从图片、动画等资源角度介绍可能会造成内存泄漏的情况以及应对方法。8. 用缓存避免内存泄漏很常见的一个例子就是图片的三级缓存结构,分别为网络缓存,本地缓存以及内存缓...转载 2019-02-14 15:49:36 · 435 阅读 · 1 评论 -
Android 常见的内存泄漏以及解决方案(一)
0. 前言Android的内存泄漏是Android开发领域永恒的话题,那今天就总结一下常见的内存泄漏吧。在Android Studio里可以通过一些分析工具比如MAT来找出潜在的内存泄漏,在Android Device Monitor中进行Dump HPROF Fil...转载 2019-02-14 15:06:40 · 516 阅读 · 1 评论 -
Android Filter类
1. Filter类Filter过滤器,一般用于搜索。自定义SearchFilter类继承android.widget.Filter,实现performFiltering(CharSequence)和publishResults(CharSequence, FilterResults)两个方法。performFiltering(CharSequence)方法用来查找数据,publishResu...原创 2019-02-14 11:12:19 · 1700 阅读 · 1 评论 -
Android 保持屏幕常亮
1. 通过getWindow().addFlags()实现在Activity的onCreate(Bundle)中添加以下代码getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);clearFlags(int)方法用来关闭getWindow().clearFlags(WindowManager.Layout...原创 2019-02-14 10:24:32 · 2043 阅读 · 1 评论 -
Android 微信和支付宝支付
1. 微信支付AppID的申请和环境搭建详见Android QQ和微信分享创建WXPayEntryActivity类,目录必须是"[您的应用包名].wxapi",并实现IWXAPIEventHandler接口用来回调注册AppID IWXAPI mApi = WXAPIFactory.createWXAPI(this, APP_ID, false); // 将该app注册到微信...原创 2019-02-13 18:19:31 · 366 阅读 · 1 评论 -
Android QQ和微信分享
直接在腾讯开放平台申请就可以了。原创 2019-02-13 17:46:57 · 1390 阅读 · 1 评论 -
Android 友盟应用
1. 获取Appkey在产品应用下添加新应用添加完成后,获取AppKey2. 配置Module选择项目,右键打开【Open Module Settings】,选择【Dependencies】,输入搜索umeng在app的build.gradle文件中会自动添加依赖dependencies { ... ... implementation 'com.umeng.an...原创 2019-02-13 17:27:24 · 354 阅读 · 1 评论 -
Android 相关七种CPU架构适配
转载来源:http://blog.csdn.net/kester_/article/details/71055901NDK开发时会涉及到CPU架构的适配,不同的机器上可能会有不同的CPU架构,也就是说,翻译到机器上使用的规则不一样,Android上有7种CPU架构。1.armeabi2.armeabi-v7a3.arm64-v8a4.x865.x86_646.MIPS7.MIPS6...转载 2019-02-13 16:15:30 · 1885 阅读 · 1 评论 -
Android Studio配置NDK环境
1. NativeCalc和Calc类NativeCalc类使用native关键字定义方法,声明为本地方法。 public class NativeCalc { public native double add(double left, double right); public native double subtract(double left, dou...原创 2019-02-13 16:08:34 · 2566 阅读 · 1 评论