自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (9)

原创 害,又忘了!!

可以在 Android Studio 的 File > Project Structure > Project 菜单中指定 Gradle 版本,也可以通过在 gradle/wrapper/gradle-wrapper.properties 文件中修改 Gradle 分发引用来指定。以下示例在 gradle-wrapper.properties 文件中将 Gradle 的版本设置为 5.4.1

2018-10-24 13:00:27 2416

原创 Android Activity 启动过程详解(上)

App 启动 Activity 时,需要向系统发送请求启动信号,处理该请求的服务就是 AMS (ActivityManagerService),这个操作是跨进程的。 init 解析 rc 脚本启动 Zygote,其所在进程 app_process (后改名 zygote )的 ZygoteInit 通过 forkSystemServer 创建一个进程,来启动各种系统服务,这里就包含 AMS。

2020-09-14 00:07:48 2785 1

原创 Android 系统启动过程详解

init 是 Android 第一个被启动的进程,init 的 PID 的值是 0,它通过解析 init.rc 脚本来构建出系统的初始运行形态,初始化程序 init.c 就是根据 init.rc 文件来初始化 android 内核驱动的,而其他 Android 系统服务程序大多都是在这个 init.rc 脚本中描述并被启动的。

2020-09-06 16:33:21 2956

原创 Android Canvas 圆角处理

在开发过程中,圆角背景和圆角图片应该都算是标配了,如下面效果:顶部一个自定义的进度背景 view,下面挨着路口放大图 ImageView。

2020-09-02 21:24:26 2343

原创 手撸算法 - 链表实践

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位数字

2020-08-27 10:16:10 122

原创 Android 主流 app 的沉浸式效果

什么是沉浸式呢?就是状态栏透明,将 activity 布局延伸到整个屏幕,所呈现的一种模式效果。

2020-08-07 22:24:37 456

原创 Android UnknownHostException 不能 log 打印 ?

今天测试时发现,在无网情况下,在 try catch 内调用 Log 如下方法打印异常信息,无输出。同样也没有成功写入到本地文件,很奇怪。

2020-08-05 12:58:33 1983

原创 Android 仿滴滴首页嵌套滑动效果

CompNsViewGroup 内部包含顶部地图 MapView 和滑动布局 LinearLayout,而 LinearLayout 布局的内部即我们常用的滑动控件 RecyclerView,在这里为何还要加层 LinearLayout 呢?这样做的好处是,我们可以更好的适配不同滑动控件,而不仅仅是将CompNsViewGroup 与 RecyclerView 耦合住。

2020-08-04 11:30:30 3538 2

原创 Android ViewPager 禁止滑动背后的思考

目前viewPager需要的场景是,在pager的两个页面各自使用腾讯地图和高德地图,来验证两家地图的兼容性。因为viewPager没有提供禁止左右滑动的api接口,所以需要自己做处理,否则pager里的地图页面不能拖动。

2020-07-30 10:20:26 948

原创 设计模式(十一)一文搞懂明白状态模式
原力计划

关于状态模式的定义,我就直接引用Head First了:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

2020-06-08 00:17:09 1367 1

原创 设计模式(十)几段代码搞懂迭代器模式
原力计划

关于迭代器模式的定义,我就直接引用Head First了:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

2020-06-07 14:40:51 1127

原创 设计模式(九)一看就懂的模版方法模式
原力计划

关于模版方法模式的定义,我就直接引用Head First了:模版方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

2020-06-04 23:45:57 1354

原创 Android 一份详细的 Charles 使用总结
原力计划

Charles能够帮助我们查看设备和Internet之间的所有HTTP和SSL/HTTPS通信。这包括请求、响应和 HTTP 头,其中包含cookies和缓存信息。

2020-05-31 23:16:04 1028

原创 设计模式(八)一看就懂的外观模式
原力计划

关于外观模式的定义,我就直接引用Head First了:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高级接口,让子系统更容易使用。听起来很抽象,其实外观模式的本质就是使用组合的方式,来管理一个子系统内的一群对象,它的意图即提供一个接口,好让一个子系统更易于使用。

2020-05-31 18:38:56 1329 1

原创 设计模式(七)几段代码搞明白适配器模式
原力计划

关于适配器模式的定义,我就直接引用Head First了:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。适配器模式的意图是进行接口的转换,这点很重要,这是区分装饰者模式的“扩展行为”和代理模式的“访问控制”的依据。

2020-05-31 12:11:10 1390

原创 设计模式(六)几段代码搞明白命令模式
原力计划

关于命令模式的定义,我就直接引用Head First了:命令模式将“请求”封装成对象,以便使用不同的请求。目的是将发起请求的对象和具体执行处理请求的对象完全解耦,并能灵活扩展具有不同操作的接收者对象。

2020-05-30 19:25:58 1508

原创 设计模式(五)最全单例模式
原力计划

关于单例模式的定义,我就直接引用Head First 了:单例模式确保一个类只有一个实例,并提供一个全局访问点。单例模式,按加载时机可以分为:饿汉方式和懒汉方式。

2020-05-29 17:29:38 1361

原创 设计模式(四)一文搞明白装饰者模式
原力计划

装饰者模式动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案 。其实装饰者模式的重点在于给对象动态的附加职责,通过对象组合的方式,运行时装饰对象,在不改变任何底层代码的情况下,给现有对象赋予新的职责。

2020-05-28 14:04:56 1791

原创 设计模式(三)一文彻底搞明白工厂和抽象工厂
原力计划

在正式的介绍工厂模式和抽象工厂模式之前,我们来先简单的认识下简单工厂,简单工厂其实并不是一个设计模式,反而更像是一种约定俗称的编程习惯

2020-05-27 00:05:45 1783

原创 设计模式(二)带你搞懂观察者模式
原力计划

观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新

2020-05-25 14:48:01 2360

原创 设计模式(一)带你搞懂策略模式
原力计划

关于策略模式的定义,我就直接引用HeadFirst书中的描述了:策略模式定义了算法蔟,并分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户

2020-05-25 02:00:51 3433

原创 你真的会写注释吗?
原力计划

只要我们按照Javadoc 注释规则,在编码完成后,Javadoc 就能够帮我们从源代码中生成相应的Html 格式的API开发文档。这些文档可以通过Web浏览器来查看。点击Oracle规范,我根据SDK内源码的注释习惯,将常用的javadoc tag进行了整理,见下:tags在给公共类或公共方法添加注释的时候,第一句话应该是一个简短的摘要。注意左侧不要紧挨 * 号,要有一个空格。如果注释有多个段落,使用< p>段落标记来分隔段落。我们还可使用< tt>标签来让特定的内容呈现出等

2020-05-12 01:14:34 5126

原创 一文带你搞懂Java动态代理
原力计划

在说动态代理之前,先来简单看下代理模式。代理是最基本的设计模式之一。它能够插入一个用来替代“实际”对象的“代理”对象,来提供额外的或不同的操作。这些操作通常涉及与“实际”对象的通信,因此“代理”对象通常充当着中间人的角色。代理模式代理对象为“实际”对象提供一个替身或占位符以控制对这个“实际”对象的访问。被代理的对象可以是远程的对象,创建开销大的对象或需要安全控制的对象。来看下类图:再来看下...

2020-05-05 20:09:19 5261 2

原创 JVM内一个对象的生死存亡
原力计划

Class类加载过程与类加载器当我们new了一个对象,会发生什么呢?来段代码:public class Tested { public static int T = 10; public int c = 1;}在编译期,编译器会将 Tested.java类转换成 Tested.class 字节码文件。当虚拟机接收到new 字节码指令时,如果此时类还未被初始化,则虚拟...

2020-05-03 20:58:32 3904 1

原创 Class类加载过程与类加载器
原力计划

在说类加载器和双亲委派模型之前,先来梳理下Class类文件的加载过程,JAVA虚拟机为了保证 实现语言的无关性,是将虚拟机只与“Class 文件”字节码这种特定形式的二进制文件格式相关联,而不是与实现语言绑定。所以其不一定是Class文件。类加载过程Class类从被加载到虚拟机内存开始,到卸载出内存为止,其生命周期包括:加载(Loading)、验证(Verification)、准备(Prepa...

2020-05-02 19:03:55 3463

原创 详解:泛型、擦除、边界
原力计划

为何有了接口,我们还需要使用泛型?因为即便使用了接口,对于程序的约束还是太强。因为一旦指明了接口,就会要求我们的代码使用特定的接口,而我们的目的是希望编写出更通用的代码,是要使代码能够应用于某种不确定的类型,而不是一个具体的接口或类。

2020-04-30 23:26:30 3585

原创 JDK8 内HashMap底层实现
原力计划

通过图示枚举的cap值,能够发现tableSizeFor 的作用,是为了保证hashMap size 是2的幂,例如我们new HashMap(7),底层实际分配的size 不是 7,而是2^3^ = 8。为何会如此,看下文。

2020-04-28 14:25:44 3718

原创 原码、反码、补码、位运算

原码:以整数 5 为例,将十进制 5 转换成二进制 可得:其中需要将 2 进制中的第 1 位来表示符号位,0代表正,1代表负。所以 -5 可用:反码:正数的反码和原码一样,负数的反码就是在原码的基础上符号位保持不变,其他位取反。还是以整数 5 为例,反码如下

2020-04-27 20:18:57 2274 1

原创 坑系列(六)Could not resolve all artifacts for configuration :classpath

今天编译项目的时候突然报错。查看网络是正常的,打开报错网址,相关jar包也能正常下载,很奇怪。经排查,原来是gradle插件版本不同导致的,由于该项目的gradle为3.4.1,而我的是3.4.0。但正常情况下,as在编译的时候会自动下载gradle3.4.1。

2020-04-02 16:49:59 6870

原创 坑系列(五) libs下的.aar不能被添加到Git?

今天被反馈上传到gitHub的对外demo没有libs目录,查看了下,发现gitignore文件中aar确实被忽略了,所以导致自己误以为全部push上去了。去掉*.aar忽略条件sync下,之后将Version Control,拖动aar到default Changelist即可。

2020-03-28 18:23:25 3591

原创 坑系列(四)Program type already present a.a.a.a.a

我先交代一下背景,我编写的两个sdk,在进行混淆打包后,发现两个sdk混淆后的文件命名冲突了,导致编译无法通过。通过log可知是由于a.a.a.a.a文件同名冲突所致。

2020-03-27 14:13:41 3431

原创 坑系列(三)AS build出的APK无法安装?

在run过程中,as会对apk使用debug签名来进行签名,所以我们直接在设备上安装失败的原因并不是签名问题,而是通过as run后,as会在apk的AndroidManifest文件中自动添加android:testOnly属性。正是由于这个属性导致我们无法在设备上正常安装。注意的是,在release目录下生成的app-release-unsignd.apk没有经过签名。

2020-03-23 21:21:38 3204

原创 坑系列(二)No value has been specified for property manifestOutputDirectory

问题描述在使用android Studio3.4编译项目的时候,直接报错,编译无法通过,但run正常错误分析当我们在Sync Project同步项目的时候,Android Studio 3.3+(Android Gradle Plugin 3.3.0+)版本为了提高构建速度,默认给我们启用了 Only sync the active variant 优化,即如果项目中使用了多个编译变体,那...

2020-03-23 19:06:53 3346

原创 坑系列(一)Failed to resolve: com.android.support:appcompat-v7:27.+

问题描述使用Android Studio(版本2.3.3)新建了一个测试项目,随后编译无法通过,直接报错错误分析通过日志信息,我们很容易就能定位到问题代码 compile 'com.android.support:appcompat-v7:27.+'这是一种很正常的写法,当我们需要一个library时,我们就能通过compile方式在Maven仓库服务器上去下载我们需要...

2020-03-23 19:04:02 3881

原创 Android 自定义View(三)仿网易云鲸云音效

此效果是由一个整体的自定义view绘制而成。其中波纹扩散效果,是通过定时改变波纹半径实现的,此波纹是由先后两个空心圆组成,在实现过程中要注意时间和各自的尺寸变化。

2019-12-30 10:50:31 2434

原创 Android 自定义View(二)仿滴滴大头针跳动效果

因为考虑到完全绘制大头针会造成Ui不通用的问题,例如我们需要的效果肯定与滴滴不同,如果我将整个大头针通过draw进行绘制,那么你在移植这个view的时候,改动肯定会很大

2019-12-24 18:05:19 2752 1

原创 android10 适配方案

在android10 之前,我们通常使用设备的deviceId来当作设备的唯一标识,这在开发中已经算是一个共识了,但是在android10之后呢,系统对于deviceId做了限制,也就是说我们拿不到设备id了。我们该怎样另寻他法而又要兼容既有的项目设备id呢?

2019-10-21 22:16:28 3216

原创 Android 自定义View系列之必备api

写本篇博客的意图是想总结一下在实际的自定义view开发中,常被我们所用到的api方法,之所以有了这个想法,是因为自定义view写的多了,总感觉掌握的知识点越来越杂,毫无章法。所以也就有了这么一个想串串知识点的念头。本文不从概念起笔,也不教你如何实现一个view,把它简单看作一个私人的api文档就好。

2019-09-29 00:29:52 3096

原创 时间复杂度与空间复杂度详解

本节主要简单分析下算法的时间、空间复杂度,并不会涉及公式的推倒,主要以能用能理解为主,因为我自己也是一个门外汉,想深入的总结也是心有余而力不足。

2018-11-13 12:59:23 3454

原创 Android WIFI 调试设备

在开发中,我们可能经常会遇到手机USB口被占用或者USB口接触不实的情况,这时候就需要我们通过Wifi无线连接手机设备进行调试了,[大笑],技术感觉很高大上,但是使用方法其实很简单,常用方法主要包括终端命令、使用ADB WIFI插件、Android WiFi ADB插件,下面我就来分别介绍下。

2018-11-10 19:38:14 2550

Android 效果之圆环渐变进度条小述

可以看下博客,看看是不是自己想要的效果https://blog.csdn.net/MingJieZuo/article/details/84102221

2018-11-15

GlideV4图片圆角处理和高斯模糊

Glide4.7.1的图片圆角处理和高斯模糊处理,其中图片处理四个角任选组合 https://blog.csdn.net/MingJieZuo/article/details/83788735

2018-11-07

LeakCanary的基本使用demo

这是一个LeakCanary的基本使用demo,本例中主要介绍了其在Activity和Fragment的使用

2018-06-11

Android 一份详细的Retrofit2.0基本使用总结

主要是介绍了Retrofit2.0的日常用法,包括注解的使用,拦截器的使用,ConverterFactory的定义

2018-05-29

Android 初识逐帧动画与补间动画的基本用法

主要介绍了逐帧动画和补间动画的基本用法,demo从xml定义和直接在代码中编写两种方式介绍 https://blog.csdn.net/MingJieZuo/article/details/83185785

2018-05-15

Android 自定义简单ViewGroup流式布局简单demo

这是一个自定义简单ViewGroup的demo,通过一步步讲解流式布局的原理来教授自定义ViewGroup

2018-05-10

Android 使用ndk-build指令编译so库为项目添加C支持以实现Java层调用Native代码

使用ndk-build指令编译so库为项目添加C支持以实现Java层调用Native代码。

2018-05-03

自定义类似仪表盘样式的半圆环带刻度可拖动SeekBar进度条效果

Android 通过自定义View实现类似仪表盘样式的半圆环带刻度可拖动SeekBar进度条效果,手指拖动按钮滑动进度条 https://blog.csdn.net/MingJieZuo/article/details/80032980

2018-04-28

Android 自定义简单View及获取xml自定义属性

一个简单自定义View的完整实例,对于初学者自定义view的步骤和原理掌握很有帮助 https://blog.csdn.net/MingJieZuo/article/details/79990661

2018-04-19

空空如也

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