自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

潇风寒月

if it can be done,in less than two minutes,do it now!

  • 博客(241)
  • 资源 (24)
  • 问答 (1)
  • 收藏
  • 关注

原创 构建自己的Android知识体系

0. 背景构建一个属于自己的知识体系,能够让我们学到的知识体系化.让自己清楚哪块是自己的知识盲区,哪块已经构建起根基.然后根据实际情况,有针对性的进行模块学习.让自己成为一个合格的Android工程师.平时看博客或者学知识,学到的东西比较零散,没有独立的知识模块概念,而且学了之后很容易忘.于是我建立了一个自己的笔记仓库 (一个我长期维护的笔记仓库,感兴趣的可以点个star~你的star是我写作的巨大大大大的动力),将平时学到的东西都归类然后放里面,需要的时候呢也方便复习.过了段时间,我觉得这样还是不够好

2021-01-18 19:19:07 1173

原创 Android-skin-support 换肤原理全面解析

一.背景二.AppCompatActivity实现三.Android创建View全过程解析四.换肤原理详细解析1.上文预备知识与换肤的关系2.源码一,创建控件全过程3. 源码二,从皮肤包加载皮肤4.简单总结一下原理(本文精髓)一.背景 公司业务上需要用到换肤.为了不重复造轮子,并且快速实现需求,并且求稳,,于是到Github上找了一个star数比较多的...

2018-07-27 20:32:36 6841 7

原创 R文件详细介绍、瘦身方案和原理

由于种种原因未升级AGP版本的项目可以选择使用booster、bytex进行R文件瘦身优化,如果可以升级AGP版本,则可以选择将AGP升级到4.1.0及以上。对R文件瘦身的效果的话,不同的项目可能不太一样,一般来讲module越多的话,可能瘦身效果会更明显(瘦好几M都是可能的)

2023-10-22 09:54:24 211

原创 Android App Bundle

现在上架Google Play必须上传Android App Bundle才行了,所以有必要简单了解下。简单来说就是Android App Bundle是一种新的发布格式,上传到商店之后,商店会利用这个Android App Bundle生成一堆Split APKs,当用户要去安装某个app时,只需要按需下载Split APKs中的部分apk(base apk + 各种配置apk),进行安装即可,总下载量大大减少。

2023-02-07 12:34:31 1312 1

原创 Android 线上卡顿监控

对于Looper Printer方案来说,是比较完善的,而且微信也在使用此方案,该踩的坑也踩完了。

2022-12-14 18:57:09 944

原创 ANR 触发、监控、分析 一网打尽

ANR是老生常谈的问题了,本文从定义、原因、发生场景、触发流程、监控与分析等多方面入手,尽力补全ANR这块的知识。

2022-11-30 14:45:59 2689 2

原创 View动画主流程全解析

View动画,即补间动画。包含:渐变、旋转、平移、缩放四种基本的动画,当然,我们可以自己扩展实现。View动画不会改变View的属性,指数视觉效果变化,动画完成之后它还是在原本的位置上。这篇文章主要着手于View动画的主流程进行分析,动画的呈现原理不在本文的分析范围之内(如Matrix之类的原理)。

2022-10-02 06:39:18 672

翻译 协程的取消和异常Part4-不应取消的协程

在本系列的第2篇文章(协程的取消和异常)中,我们学习了及时取消协程的重要性。在Android上,你可以使用Jetpack提供的CoroutineScope:viewModelScope或lifecycleScope,当它们的scope是完成状态时,它们会自动取消所有的协程。即当Activity、fragment、Lifecycle结束时,取消所有正在进行的工作。如果你是自己创建CoroutineScope,那么请你确保启动协程时将Job实例保存起来,并在不需要的时候调用cancel取消掉。

2022-08-22 07:26:18 248

翻译 协程的取消和异常Part3-异常

我们作为开发者,在开发app时,如果程序的运行没有按预期执行时,应适当地给用户提示。一方面,看到应用程序崩溃对用户来说是一种糟糕的体验;另一方面,当操作没有成功时,向用户显示正确的信息是必不可少的。

2022-08-22 07:25:31 522

翻译 协程的取消和异常Part2-取消

在不需要协程继续工作时,需要及时地取消它,以免浪费内存和电量。本篇文章将带你了解协程取消的来龙去脉。

2022-08-22 07:24:47 499

翻译 协程的取消和异常Part1-核心概念

本系列博文将深入探讨协程中的取消和异常。即时取消对于避免做多余的工作很重要,因为这会浪费内存和电池寿命;正确的异常处理是良好用户体验的关键。作为本系列其他 3 部分的基础,本篇文章定义了一些协程的核心概念(例如 CoroutineScope、Job 和 CoroutineContext),这些东西非常重要。

2022-08-22 07:24:02 231

原创 Kotlin作用域函数详解

在Kotlin中,函数是一等公民,它也是有自己的类型的。比如`()->Unit`,函数类型是可以被存储在变量中的。Kotlin中的函数类型形如:`()->Unit`、`(Int,Int)->String`、`Int.(String)->String`等。它们有参数和返回值。

2022-08-22 07:21:00 817

原创 Kotlin协程之Dispatchers原理

Kotlin协程不是什么空中阁楼,Kotlin源代码会被编译成class字节码文件,最终会运行到虚拟机中。

2022-08-03 11:55:23 1234

原创 Kotlin协程createCoroutine和startCoroutine原理

createCoroutine和startCoroutine就是用来创建和启动协程的基础API,launch、async等在底层一定程度上都使用了该基础API,launch和async只不过是封装而已。

2022-08-02 09:54:33 658

原创 Kotlin挂起函数原理

Kotlin挂起函数平时在学习和工作中用的比较多,掌握其原理还是很有必要的。本文将一步一步带着大家分析其原理实现。

2022-07-09 16:10:02 1108

原创 我的2021 年终总结

1. 前言时间过得太快了,又要过年了。简单总结一下这一年的得失,规划一下来年的计划。2. 输出今年输出的博客数量挺少的,掘金上一共才7篇,其他一些稍微短一些的我都直接贴到Android-Notes仓库里面去了。虽然博客数量不多,但是去年掘金上居然收获了500多个收藏,顺利升到3级;CSDN阅读量终于破百万了;Github上累计收获了刚好800个star,争取来年破1000。记得年初的时候Android-Notes才几十个star,现在已经400多了,感谢各位大佬的支持。nice~明年继续输出。

2021-12-27 19:57:38 763

原创 死磕Android_RxJava3原理解析

文章首发于我建立的一个笔记仓库1. 背景RxJava是一个基于事件流、实现异步操作的库。官方介绍: RxJava:a library for composing asynchronous and event-based programs using observable sequences for the Java VM(RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)文中用到的RxJava源码版本为3.0.13,文中的demo源码 https:/.

2021-07-29 08:31:55 530

原创 Kotlin 协程与架构组件一起使用及底层原理分析

kotlin的协程封装了线程的API,这个线程框架可以让我们很方便得编写异步代码。虽然协程已经很方便了,但是如果再配合Google提供的架构组件的KTX扩展一起使用,那就更方便了。1. 添加KTX依赖//将 Kotlin 协程与架构组件一起使用//ViewModelScopeimplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'//LifecycleScopeimplementation 'androidx.life

2021-06-05 07:20:17 727 6

原创 Choreographer原理及应用

Choreographer对于一些同学来说可能比较陌生,但是,它其实出场率是极高的。View的三大流程就是靠着Choreographer来实现的,翻译过来这个单词的意思是“编舞者”。下面我们来详细介绍,它的具体作用是什么。demo地址1. 前置知识在讲Choreographer之前,必须得提一些前置知识来辅助学习。刷新率刷新率代表屏幕在一秒内刷新屏幕的次数,这个值用赫兹来表示,取决于硬件的固定参数。这个值一般是60Hz,即每16.66ms刷新一次屏幕。帧速率帧速率代表了GPU在一秒内绘制操

2021-04-05 08:09:22 1561

原创 Handler同步屏障

1. 同步屏障机制是什么Handler发送的消息分为普通消息、屏障消息、异步消息,一旦Looper在处理消息时遇到屏障消息,那么就不再处理普通的消息,而仅仅处理异步的消息。不再使用屏障后,需要撤销屏障,不然就再也执行不到普通消息了。为什么需要这样?它是设计来为了让某些特殊的消息得以更快被执行的机制。比如绘制界面,这种消息可能会明显的被用户感知到,稍有不慎就会引起卡顿、掉帧之类的,所以需要及时处理(可能消息队列中有大量的消息,如果像平时一样挨个进行处理,那绘制界面这个消息就得等很久,这是不想看到的)。屏

2021-04-01 10:12:32 356 1

原创 Window 、Activity、 View 三者关系

ps:文中源码为API 28经常听到和用到Window,Window到底是什么?简单概括三者关系View其实是Android中视图的呈现方式,它必须附着在Window这个抽象的概念上,因此有视图的地方就有Window。有视图的地方不仅仅有Activity,还有Dialog、Toast,除此之外还有一些依托Window实现的视图:PopupWindow、菜单,它们也是视图,有视图的地方就有Window。因此Activity、Dialog、Toast都对应着一个Window。三者各自创建时机这里是.

2021-03-25 19:59:14 350 1

原创 一文汇总JVM所有知识点(二)

8. 前端编译与优化8.1 概述编译期没有具体的上下文语境的话,其实是一个模糊的表述。它可能是下面3种情况:前端编译器(叫“编译器的前端“更准确)把.java文件转换成.class文件的过程Java虚拟机的即时编译器(JIT编译器,Just In Time Compiler)运行期把字节码转变成本地机器码的过程使用静态的提前编译器(AOT编译器,Ahead Of Time Compiler)直接把程序编译成与目标机器指令集相关的二进制代码的过程Java虚拟机设计团队选择把对性能的优化全部集中

2021-02-27 10:51:56 306

原创 一文汇总JVM所有知识点(一)

1. JVM内存数据区域1.1 内存数据区域下面这些都是Java虚拟机规范,不是虚拟机具体实现JVM内存可以划分为若干个不同的数据区域: 程序计数器,虚拟机栈,本地方法栈,堆,方法区1.1.1 程序计数器程序计数器占用的内存空间比较小,可以看做是当前线程所指向的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支操作、循环操作、跳转、异常处理等也都需要依赖程序计数器。在Java虚拟机规范中,程序计数器没有规定OutOfMemoryError

2021-02-27 10:50:56 339

原创 黑科技:提升进程优先级的一种思路

本地中的demo地址,文中源码为API 28一、前言前不久,看到维术大佬发表的一篇文章:另一种黑科技保活方法。文章内容主要是利用Android的2个bug(黑科技就是利用系统bug骚操作)来提升进程的优先级为前台进程,觉得挺有意思,于是决定找个时间研究一下。因为原文中大佬主要写的是思路,所以流程比较粗略,没有提供具体的demo实现。可能有些朋友不知道维术大佬,太极·虚拟框架就是他创作的。我就想着自己简单实现一下,搞个demo看看效果。结果不搞不知道啊,这玩意儿搞起来可太花时间了,太多知识盲区.

2021-01-30 19:58:33 418

原创 Android进程间通信 Messenger详解

1. 概念Messenger,即进程间通信的信使.它是基于Message的进程间通信,我们可以像在线程间利用Handler.send(Message)一样.Messenger是一种轻量级的IPC方案,它的底层实现其实就是AIDL.跨进程通信使用Messenger时,Messenger会将所有服务调用加入队列,然后服务端那边一次处理一个调用,不会存在同时调用的情况.而AIDL则可能是多个调用同时执行,必须处理多线程问题.对于大多数应用,跨进程通信无需一对多,也就是无需执行多线程处理,此时使用Messen

2021-01-10 15:40:15 859

原创 一个Android菜鸡的2020之旅

2020年12月27日15:53:022020就快结束了,回首望去,感慨挺多.1. 前言2020 注定是不平凡的一年,新冠疫情太恐怖了,希望早点好起来.今年因为疫情的原因,出行不太安全,好多娱乐项目我都取消了.宅在家里的时间更长了…说起来今年是我写个人年终总结的第4年了,第一次写还是17年的时候了.简单回忆一下过去一年的得失,展望一下即将到来的2021.2. 学习今年学过的一些大块的知识点,简单罗列一下高清大图看这里设计模式: 设计模式是程序员必备的软技能,这个必须得吃透.这块之.

2020-12-28 13:16:46 721 2

原创 Android进程间通信 深入浅出AIDL(二)

本篇文章为Android进程间通信 深入浅出AIDL系列的第二篇,建议配合AIDL第一篇食用3. AIDL原理3.1 AIDL是怎么工作的?我们编写了aidl文件之后,啥也没干就自动拥有了跨进程通信的能力.这一切得归功于Android Studio根据aidl文件生成的IPersonManager.java文件(生成的这个文件通过双击Shift输入IPersonManager.java即可找到),它里面已经帮我们封装好了跨进程通信这块的逻辑(最终是通过Binder来完成的),所以这个IPersonMa

2020-12-19 15:44:48 328 1

原创 Android进程间通信 深入浅出AIDL(一)

文中示例代码均可在demo中找到1. AIDL概念Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语言 (IDL) 类似.您可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信.在 Android 中,一个进程通常无法访问另一个进程的内存.因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供您操作的对象.编写执行该编组操作的代码较为繁琐,因此 Android 会使用 AIDL 为您处理此问题.跨进程通信(IPC.

2020-12-19 15:38:10 423 1

原创 死磕Android_LeakCanary原理赏析

本文基于 leakcanary-android:2.5思维导图1. 背景Android开发中,内存泄露时常有发生在,有可能是你自己写的,也有可能是三方库里面的.程序中已动态分配的堆内存由于某种特殊原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至程序崩溃等严重后果.本来Android内存就吃紧,还内存泄露的话,后果不堪设想.所以我们要尽量避免内存泄露,一方面我们要学习哪些常见场景下会发生内存泄露,一方面我们引入LeakCanary帮我们自动检测有内存泄露的地方.LeakCa.

2020-12-12 16:48:06 4752 5

原创 打遍天下二叉树

文章目录1. 基本概念2. 深度优先遍历2.1 递归方式2.2 非递归方式3. 广度优先遍历4. 案例4.1 二叉树的最大深度4.2 记录每一层的所有元素在做一些二叉树的过程中,我发现,大多数题目是有规律可循的.所以打算总结一下二叉树这一块的打法.ps: 文中的所有代码均可在 https://github.com/xfhy/Algorithms 中找到. 该项目有一些关于二叉树的基本学习代码和二叉树的题解等.1. 基本概念二叉树(binary tree) 是树的一种特殊形式。二叉,顾名思义,这

2020-12-02 08:55:12 6012 12

原创 HashMap源码赏析

我的所有原创Android知识体系,已打包整理到GitHub.努力打造一系列适合初中高级工程师能够看得懂的优质文章,欢迎star~1. 存储结构1.1 JDK 1.7内部是以数组的形式存储了Entry对象,而每个Entry对象里面有key和value用来存值.它里面包含了key、value、next、hash四个字段,其中next字段是用来引用下一个Entry的(相同的hash值会被放入同一个链表中).数组中的每个位置都是一条单链表(也可以称之为桶),数组中的元素的表头.解决冲突的方式是拉链法,同一条

2020-09-27 12:38:03 1489 4

原创 反编译实战之修改执行逻辑、加日志和调试

文中相关工具下载链接:https://pan.baidu.com/s/1_bknFSnsYxLUNJ3WTulEFA 提取码:4qo8我的所有原创Android知识体系,已打包整理到GitHub.努力打造一系列适合初中高级工程师能够看得懂的优质文章,欢迎star~1. 反编译基操1.1 借鉴code一般来说,如果只是想借鉴一下友商的code,我们只需要拿到对方的apk,拖到jadx里面就行.jadx能查看apk的xml布局和java代码.jadx有时候会出现部分class反编译失败的情况,这时可.

2020-09-27 09:30:52 1946 6

原创 理解Java中的CopyOnWriteArrayList

1. 原理CopyOnWriteArrayList有点像线程安全的ArrayList.其实它的原理简单概括起来就是读写分离.写操作是在一个复制的数组上进行的,读操作在原始数组中进行,读写是分离的.写操作的时候是加锁了的,写操作完成了之后将原来的数组指向新的数组.下面我们简单看下add和get方法是如何实现写读操作的./** * Appends the specified element to the end of this list. * * @param e element to be ap

2020-09-11 19:47:38 220

原创 理解Java中的String

1. String是如何实现的?里面是char数组实现的,最新的版本换成了byte数组(ASCII占1位,中文的话占2位).2. 字符串常量池Java堆内存中一个特殊的存储区域,当创建一个String对象时,假如此字符串值已经存在于常量池中,则不会创建一个新的对象,而是引用已经存在的对象.JDK 1.6及之前字符串常量池是存放在方法区的,JDK 1.7才开始放在堆中.3. 为什么设计成不可变的? final修饰提高String Pool的效率和安全性.多线程安全4. String,Stri

2020-09-11 19:38:52 251

原创 手把手教大家用Transform API和ASM实现一个防快速点击案例

0. 前言我的所有原创Android知识体系,已打包整理到GitHub.努力打造一系列适合初中高级工程师能够看得懂的优质文章,欢迎star~建议阅读本篇文章之前掌握以下相关知识点: Android打包流程+Gradle插件+Java字节码在Android Gradle Plugin中,有一个叫Transform API(从1.5.0版本才有的)的东西.利用这个Transform API咱可以在.class文件转换成dex文件之前,对.class文件进行处理.比如监控,埋点之类的.而对.class

2020-08-23 21:46:44 1194 3

原创 Gradle 插件练习-动态移除权限

1. 开始之前Gradle DSL 文档Gradle基于Groovy,而Groovy基于Java,最后始终得运行在JVM之上.Gradle、build.gradle、settings.gradle之类的最终都会被搞成一个对象,然后才能执行.Gradle 对象: 每次执行gradle taskName时,Gradle都会默认构造出一个Gradle对象.在执行过程中,只有这么一个Gradle对象,一般很少去定制它.Project对象: 一个build.gradle就对应着一个Project对象.Se

2020-08-06 15:20:08 984

原创 Java字节码解读

文章目录1. 字节码2. 字节码结构2.1 魔数2.2 版本号2.3 常量池2.3.1 常量池容量计数器2.3.2 常量解读2.4 访问标志2.5 类索引,父类索引,接口索引2.5.1 类索引2.5.2 父类索引2.5.3 接口计数器2.5.4 接口索引集合2.6 字段表2.6.1 字段表计数器2.6.2 字段表 单个分析2.7 方法表2.7.1 方法表的结构2.7.2 方法表访问标志2.7.3 解读方法2.8 属性表2.8.1 属性类型2.8.2 属性表结构2.8.3 Code属性2.9 附加属性2.10

2020-08-04 00:09:51 2463

原创 反编译基础知识

!!! 严正声明本文相关反编译技术仅限于技术研究使用,不能用于非法目的,否则后果自负.1. apktool 逆向APK文件的工具官方网站apktool主要用于逆向apk文件,可以将资源解码,并在修改之后可以重新构建它们.它还可以用来重新构建apk.1.1 功能将资源解码成近乎原始的形式(包括resources.arsc, classes.dex, 9.png. 和 XMLs)将解码的资源重新打包成apk/jar组织和处理依赖于框架资源的APKSmali调试执行自动化任务安装教程1

2020-06-29 18:55:47 6463

原创 JNI NDK入门详解

Android开发中,由于各种原因(跨平台,高性能,敏感数据处理等),这时候需要用到大家耳熟能详的JNI(Java Native Interface).本篇文章将带大家复习一下JNI中那些常用的知识点.所以本文中没有一些基本环境配置的讲解,如果需要的话,可以先阅读一下我之前写的:JNI初识 HelloWorldJNI Java与C的相互调用与基本操作本文相关demo: https://github.com/xfhy/AllInOne/blob/master/app/src/main/cpp/nat

2020-06-14 00:20:06 1262 1

原创 第一行代码读书笔记 Kotlin Android

郭神的Android第一行代码更新了,听到消息的我立马就下单了,拿到书就开始如饥似渴地翻阅着.写的特别棒,学到了很多东西,下面是一些我不太熟悉的东西.开源项目如下:天气应用 https://github.com/xfhy/SunnyWeather请求权限的库 https://github.com/xfhy/PermissionX1. 快速入门Kotlin语言优先使用valob...

2020-05-07 17:34:59 919

new_city.db

中国天气网提供的城市或者地区数据,包括省份,城市,区县,编码code等详细信息,非常全面

2021-02-24

MemoryAnalyzer分析内存泄露工具

MemoryAnalyzer软件可以帮你进行发现或者分析调试的代码等无法进行修复的问题;支持分析内存问题.;支持监控整个 Java 应用程序的状态与行为.还可以进行读取,使应用程序运行时可以支持让Java 运行时环境的生产

2019-12-14

蓝色鼠标指针.zip

蓝色的鼠标指针,特别好看.带来不一样的视觉盛宴,看腻了系统默认自带的鼠标指针,这是你的最佳选择.相信能给你带来不一样的体验

2019-12-14

dex-tools-2.1 工具包.zip

反编译Java class文件和Android dex文件到Java源码的利器。

2019-12-14

Android性能优化最佳实践(png图)

布局优化,绘制优化,内存优化,启动优化,其他,稳定,省电优化,体积优化等

2019-04-21

Android IPC机制总结(png图)

Android IPC机制总结,概念,使用场景,开启多进程模式,运行机制,优缺点以及场景等等

2019-04-21

强制更换windows桌面背景

有些公司控制了每天电脑,不能更换桌面背景,网上的方法试了都没效果..我是用的命令的方式实现的,强制操作,哈哈.下载下来之后用记事本修改一下里面的壁纸路径,双击运行文件就可以修改桌面背景了,非常方便

2018-09-30

手写Retrofit

手写一个简单的Retrofit,附上所有的代码注释与解析,还有测试用例.让你完全理解Retrofit

2018-09-25

TakeColor最新版

目前为止,感觉最好的取色工具。 以往用别的取色工具总是用鼠标点击取色,这个工具直接用alt+c快键捷取色,快捷方便

2018-09-10

Android逆向助手2.2正式版

Android逆向助手2.2正式版,Android逆向助手是一款针对安卓平台的强大逆向辅助软件,功能涵盖apk反编译打包签名;dex/jar互转替换提取修复;so反编译;xml、txt加密;字符串编码等。支持直接将文件拖放到源和目标文件,不用每次都点浏览选择。软件暂时支持WinXP、Win7、Win2003系统。

2018-09-10

删除指定目录下的所有指定名称的文件夹

删除指定目录下的所有指定名称的文件夹,bat批处理.只需要将脚本放到指定文件夹,就可以双击运行就可以删除你想要全部删除的文件夹,递归的删除.需要用notpad打开并修改需要删除的文件名名称

2018-09-10

可以将任意网页转换成markdown的小工具

可以将任意网页转换成markdown的小工具,首先必须要有python环境,然后需要安装tomd库,然后修改需要生成markdown的网页地址,然后通过python运行小工具就可以将网页转markdown咯

2018-09-10

Android进阶之光(刘望舒) pdf 带书签,可复制

Android进阶之光(刘望舒) 的pdf,带书签,可复制, 高清.如果侵权的话,请立刻联系我,我马上删除.谢谢....

2018-09-10

RoomDemo(Kotlin)

Kotlin+LiveData+ViewModel+Room,一个简单的demo,将以上的东西全部结合起来.简单易懂,注释齐全.

2018-08-31

黑马Kotlin视频资料 配套的

黑马Kotlin视频资料 是和黑马视频配套的 ,大家可以在这里下载

2017-11-22

显示U盘隐藏文件.cmd

显示U盘隐藏文件,放到U盘里,双击即可,轻松查看U盘隐藏文件

2017-11-21

CircleImageView.zip

Android平台上,自己写的圆形的ImageView,使用非常方便

2017-11-21

EasyBanner.zip

一个轻松实现简单banner的框架 这里比较方便大家下载

2017-11-21

Kotlin写的RecyclerView

Kotlin最近比较火,我简单学了一下,写了个小demo,RecyclerView的.

2017-08-04

3天学会Kotlin

里面有3天的学习代码,个个知识点都分得非常清晰,注释非常全面,有需要的拿去.拿来Kotlin入门不是问题.

2017-07-30

Android Studio常用设置

这是我的Android Studio的设置,可以下载下来直接导入的,非常方便,共享给大家,不用每次都去设置.

2017-07-30

Android短信备份

本人在Android中学习到备份短信时,需求是这样的,需要将短信备份到xml文件中.踩到一个坑,当XmlSerializer遇到emoji表情时,就会出错,保存xml文件就会失败.最后谷歌找了个别人写的KXmlSerializer(),完美解决这个问题.demo中有完整代码

2017-02-02

经典触屏贪吃蛇

经典的贪吃蛇,已实现触屏

2016-03-23

ktv初级点歌系统

初级ktv点歌系统哦,那天我把ktv的点歌系统终于写出来了,用C写的,感觉很自豪

2015-06-05

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

TA关注的人

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