<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[csdnxia的博客]]></title><description><![CDATA[不积跬步无以至千里，不积小流无以成江海]]></description><link>https://blog.csdn.net/csdnxia</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; csdnxia]]></copyright><item><title><![CDATA[再见，2025。新的征程，2026，扬帆起航！]]></title><link>https://blog.csdn.net/csdnxia/article/details/156447558</link><guid>https://blog.csdn.net/csdnxia/article/details/156447558</guid><author>csdnxia</author><pubDate>Wed, 31 Dec 2025 11:11:27 +0800</pubDate><description><![CDATA[以后的日子，希望自己尽可能多的分享一些framework相关的知识，持续深耕Android源码，虽然现在是AI盛兴而Android原生开发逐渐没落的时代了，但任何事情都不是一蹴而就的，唯有保持积极乐观的心态去拥抱时代的改变，参与进来，坚持下去。消失的这几年其实一直在从事Android开发，只是换了新的公司，工作内容也从应用开发转为framework开发，转型的这几年很少写应用了，基本都是整机项目交付，项目编译，结合framework进行项目配置，因为我进入了一家手机制造企业😊。]]></description><category></category></item><item><title><![CDATA[Java基础语法-关键字的使用介绍]]></title><link>https://blog.csdn.net/csdnxia/article/details/120939022</link><guid>https://blog.csdn.net/csdnxia/article/details/120939022</guid><author>csdnxia</author><pubDate>Sun, 24 Oct 2021 19:35:04 +0800</pubDate><description><![CDATA[简介
Java关键字是Java程序语言结构的一部分，它对于编译器有特殊的含义及作用，我们不能用将它们用变量名称（编译会报错）。Java中一共有50个关键字，包含2个保留字const和goto，所有的关键字都是小写，全部的关键字如下表所示：




char
byte
short
int
long




float
double
boolean
if
else


switch
case
break
default
do


while
continue
for
try
catch


throw
thro]]></description><category></category></item><item><title><![CDATA[使用Hexo免费搭建个人博客教程]]></title><link>https://blog.csdn.net/csdnxia/article/details/120820081</link><guid>https://blog.csdn.net/csdnxia/article/details/120820081</guid><author>csdnxia</author><pubDate>Mon, 18 Oct 2021 09:40:46 +0800</pubDate><description><![CDATA[前言
现在各种互联网博客非常的，常见的如CSDN、简书、掘金、博客园等平台，这些博客平台做的都很好，可以直接在上面注册自己的账号写文章，发表的文章在百度、Bing等搜索引擎上也能收到，但缺点是受于平台的各种限制，个人定制化不自由，而且大多数平台都会有各种广告。
于是想到自己搭建一个博客网站，但对大多数人而言，自己购买服务器和域名来搭建博客成本实在太高的了，而且有点浪费，还需要定期维护，这时一种不错的选择就是使用第三方开源托管平台（GitHub、GitLab等）来当作我们的服务器，并使用快速简洁的博客搭建框架]]></description><category></category></item><item><title><![CDATA[Android开发者必备工具-常见Android模拟器(MuMu、夜神、蓝叠、逍遥、雷电、Genymotion...)]]></title><link>https://blog.csdn.net/csdnxia/article/details/120656206</link><guid>https://blog.csdn.net/csdnxia/article/details/120656206</guid><author>csdnxia</author><pubDate>Fri, 08 Oct 2021 17:55:08 +0800</pubDate><description><![CDATA[模拟器的用途介绍
作为一名Android开发者，模拟器是我们调试和测试应用必备的神器。
模拟器主要有以下用途：
第一个是用于游戏。游戏玩家可以在他们的电脑上使用模拟器来让一些游戏更容易玩。他们不必依赖设备的电池寿命，借助于键盘、鼠标以及更大的屏幕视野等技巧有助于更好的游戏体验。在大多数情况下，这些小技巧并不违法（在大多数游戏中），所以没有人真正有问题。比较不错的安卓游戏模拟器包括 LDPlayer、BlueStacks、MeMu、KoPlayer 和 Nox等。
第二个最常见的场景是开发。 Android ]]></description><category></category></item><item><title><![CDATA[Kotlin开发效率提升技巧—扩展函数]]></title><link>https://blog.csdn.net/csdnxia/article/details/120140510</link><guid>https://blog.csdn.net/csdnxia/article/details/120140510</guid><author>csdnxia</author><pubDate>Wed, 08 Sep 2021 16:52:59 +0800</pubDate><description><![CDATA[什么是扩展函数？
在介绍什么是Kotlin的扩展函数之前，先来看一个具体的例子。
在日常Android任务开发中，一般在设置View的尺寸时都应该使用dp值，但是View系统底层都是使用的px值来进行计算的，所以需要把dp值转成对应的px值。
在Java中，可以写一个dp转px的工具类，代码如下：
public class Util {
	public static float dp2px(float dpValue, Context context) {
		return TypedValue.apply]]></description><category></category></item><item><title><![CDATA[OkHttp源码解析]]></title><link>https://blog.csdn.net/csdnxia/article/details/118298607</link><guid>https://blog.csdn.net/csdnxia/article/details/118298607</guid><author>csdnxia</author><pubDate>Mon, 28 Jun 2021 11:47:22 +0800</pubDate><description><![CDATA[一、OkHttp总体架构介绍
简介
OkHttp 是一个处理网络请求的开源项目，是 Android 端最火热的轻量级框架，由Square 公司贡献用于替代 HttpUrlConnection 和 Apache HttpClient。随着 OkHttp 的不断成熟，越来越多的 Android 开发者使用 OkHttp 作为网络框架。OkHttp之所以可以赢得如此多开发者的喜爱，主要得益于如下特点：

支持 HTTPS/HTTP2/WebSocket
内部维护任务队列线程池，友好支持并发访问
内部维护连接池，支]]></description><category></category></item><item><title><![CDATA[Handler使用及源码解析]]></title><link>https://blog.csdn.net/csdnxia/article/details/117336715</link><guid>https://blog.csdn.net/csdnxia/article/details/117336715</guid><author>csdnxia</author><pubDate>Thu, 27 May 2021 20:09:05 +0800</pubDate><description><![CDATA[文章目录Handler机制是什么？Handler机制主要角色Handler机制的基本使用及源码解析发送消息取出消息处理消息Handler常见问题解答1.Handler是如何做到在主线程更新UI的？2.如何处理Handler导致的内存泄漏？3.子线程创建Handler抛异常？Handler机制扩展HandlerThread
Handler机制是什么？
当我们运行一个Android应用程序时，系统会创建一个进程，这个进程就是我们的主线程（UI线程-ActivityThread）。为了防止阻塞UI主线程，我们一般]]></description><category></category></item><item><title><![CDATA[Kotlin作用域函数--let、with、run、apply、also]]></title><link>https://blog.csdn.net/csdnxia/article/details/116483905</link><guid>https://blog.csdn.net/csdnxia/article/details/116483905</guid><author>csdnxia</author><pubDate>Fri, 07 May 2021 10:40:01 +0800</pubDate><description><![CDATA[Kotlin作用域函数
Kotlin 提供了一系列用来在给定对象上下文中执行代码块的函数，包括let、with、run、apply、also。每个库函数都有它的实际应用场景，使用它们能让你的代码会更具有可读性、更优雅、更简洁。善于合理使用标准库函数，也是衡量对Kotlin掌握程度标准之一。 下面是每个函数的基本用法和适用场景，最后对他们进行对比总结以及在实际编码中该如何选择哪个函数。
let
let函数只接收一个Lambda参数，并且会在Lambda表达式中提供调用对象的上下文it。返回值为函数块的最后一行]]></description><category></category></item><item><title><![CDATA[常用ADB命令]]></title><link>https://blog.csdn.net/csdnxia/article/details/116241979</link><guid>https://blog.csdn.net/csdnxia/article/details/116241979</guid><author>csdnxia</author><pubDate>Wed, 28 Apr 2021 20:05:35 +0800</pubDate><description><![CDATA[ADB(Android Debug Bridge)
ADB是Android开发者和测试人员必不可少的工具。熟悉ADB命令将会给日常开发带来很多帮助，下面是我整理的一些平时使用比较多的ADB命令，当然ADB命令远不止这些，更多的命令可以参考Zhuang Ma的GitHub项目 。
在介绍ADB命令之前先让我们打开命令运行窗口：

Windows：win + R 打开运行窗口，然后输入cmd回车即可。
Mac：cmd⌘ + space打开spotlight，然后输入Terminal回车即可。
Android S]]></description><category></category></item><item><title><![CDATA[序列化-Serializable和Parcelable的简单介绍]]></title><link>https://blog.csdn.net/csdnxia/article/details/108593276</link><guid>https://blog.csdn.net/csdnxia/article/details/108593276</guid><author>csdnxia</author><pubDate>Tue, 15 Sep 2020 09:41:24 +0800</pubDate><description><![CDATA[文章目录序列化的本质Serializable序列化过程反序列化过程ExternalizableParcelable
序列化的本质
序列化是一种用来处理对象流的机制。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化：将java对象转换成字节序列的过程，字节码可以保存到数据库、内存、文件等，也可用于网络传输
反序列化：将字节序列恢复为java对象的过程。
序列化实现的方式有很多方案，在java中是使用的JDK内置的Serializable接口来实现序列化，而Android SDK中增加Parcel]]></description><category></category></item><item><title><![CDATA[分享一款思维导图工具-幕布(附在线工具合集、Android进阶知识体系)]]></title><link>https://blog.csdn.net/csdnxia/article/details/108019468</link><guid>https://blog.csdn.net/csdnxia/article/details/108019468</guid><author>csdnxia</author><pubDate>Sat, 15 Aug 2020 15:00:57 +0800</pubDate><description><![CDATA[简介
思维导图在日常工作中有着非常重要的作用，它可以帮助我们列待办计划、理清思路、发散思维、记录笔记等。市面上有很多的思维导图工具（Xmind、MindMaster、MindManager、百度脑图），这些工具我都使用过，各有优势，但是都有一些不足的地方，直到前段时间看到别人分享了一款工具-幕布，我才知道这才是我想要的那个导图。
幕布的优势

多端同步，支持桌面版（Windows、Mac OS）、手机版（ios、Android）和网页版
极简操作，支持一键切换大纲视图和思维导图视图，2种模式都可轻松编辑
自]]></description><category></category></item><item><title><![CDATA[Android控件-TabLayout使用介绍]]></title><link>https://blog.csdn.net/csdnxia/article/details/105947804</link><guid>https://blog.csdn.net/csdnxia/article/details/105947804</guid><author>csdnxia</author><pubDate>Fri, 08 May 2020 10:09:47 +0800</pubDate><description><![CDATA[TabLayout简述简单示例属性介绍tabIndicatorFullWidthtabRippleColortabTextAppearancetabModetabIndicatorColortabIndicatorHeighttabIndicatorGravity
简述
TabLayout是Android support中的一个控件android.support.design.widget.Tab...]]></description><category></category></item><item><title><![CDATA[分享一些实用的小工具（Windows版）]]></title><link>https://blog.csdn.net/csdnxia/article/details/102559806</link><guid>https://blog.csdn.net/csdnxia/article/details/102559806</guid><author>csdnxia</author><pubDate>Wed, 16 Oct 2019 10:37:31 +0800</pubDate><description><![CDATA[##屏幕捕获取色类
FsCapture
工具条
编辑器

软件下载地址：https://faststone-capture.en.softonic.com/
LICEcap
LICEcap是一款屏幕录制工具，支持导出 GIF 动画图片格式，轻量级、使用简单，录制过程中可以随意改变录屏范围。

软件下载地址：https://licecap.en.softonic.com/
ColorCop
Colo...]]></description><category></category></item><item><title><![CDATA[Android获取控件宽高的几种方式]]></title><link>https://blog.csdn.net/csdnxia/article/details/102559797</link><guid>https://blog.csdn.net/csdnxia/article/details/102559797</guid><author>csdnxia</author><pubDate>Tue, 15 Oct 2019 21:21:59 +0800</pubDate><description><![CDATA[Android获取控件宽高的5种方式
获取控件的宽高直接使用view的getWidth() 和 getHeight()方法获取。
但是直接在Activity的onCreate() 或 onResume()中获取的宽高为0。
原因是Activity的启动流程和布局文件的加载流程是2个异步的过程，在onCreate或onResume的时候控件还没有绘制完成，因此获取的宽、高为0.
定义获取宽高方法
/...]]></description><category></category></item><item><title><![CDATA[Android百分比透明度与十六进制值的转换]]></title><link>https://blog.csdn.net/csdnxia/article/details/102481354</link><guid>https://blog.csdn.net/csdnxia/article/details/102481354</guid><author>csdnxia</author><pubDate>Thu, 10 Oct 2019 14:16:16 +0800</pubDate><description><![CDATA[很多时候，UI设计师给我们的设计稿上面，对于有透明度变化的UI一般都以百分比的形式告诉我们（比如下面的图片中遮罩背景不透明度为70%），但是这个百分比对应的十六进制alpha值到底是多少呢？下面我们通过代码来实现百分比到十六进制值的转换。

private void printAlpha() {
    for (double i = 1; i &gt;= 0; i -= 0.01) {
    ...]]></description><category></category></item><item><title><![CDATA[Android开发环境搭建]]></title><link>https://blog.csdn.net/csdnxia/article/details/101981846</link><guid>https://blog.csdn.net/csdnxia/article/details/101981846</guid><author>csdnxia</author><pubDate>Wed, 09 Oct 2019 17:13:29 +0800</pubDate><description><![CDATA[Android开发环境搭建
android开发环境搭建需要如下配置:

JDK(Java Development Kit)、
SDK(Software Development Kit)、
Android Studio工具

下面就来一步步实现：
安装JDK
Android系统底层内核是基于Linux系统开发的，但是API框架是使用Java语言编写的，Java提供了运行环境、java工具以及基础的类...]]></description><category></category></item><item><title><![CDATA[Android简介及发展历程]]></title><link>https://blog.csdn.net/csdnxia/article/details/101513820</link><guid>https://blog.csdn.net/csdnxia/article/details/101513820</guid><author>csdnxia</author><pubDate>Fri, 27 Sep 2019 15:21:17 +0800</pubDate><description><![CDATA[简介
Android是基于Linux系统的开源操作系统，是由Andy Rubin于2003年在美国加州创建，后被Google于2005年收购。在2008年的时候发布了第一部Android智能手机，随后Android不断发展更新，占据了全球大部分的手机市场。
Android每一个版本都会用一个按照A-Z开头顺序的甜品来命名，但从Android P之后Google改变了这一传统的命名规则，可能是没有那...]]></description><category></category></item><item><title><![CDATA[kotlin面向对象编程]]></title><link>https://blog.csdn.net/csdnxia/article/details/101454345</link><guid>https://blog.csdn.net/csdnxia/article/details/101454345</guid><author>csdnxia</author><pubDate>Thu, 26 Sep 2019 17:05:30 +0800</pubDate><description><![CDATA[定义函数
与java函数不同的是，定义函数要在前面加上"fun" 关键字，返回值类型放在方法名之后，如：
fun getResult(a: Int, b: Int): Int {
    return a + b
}

如果一个函数只有一个并且是表达式函数体并且是返回类型自动推断的话，可以直接这样写:
fun getResult(a: Int, b: Int) = a + b

如果一个函数返回一...]]></description><category></category></item><item><title><![CDATA[Kotlin集合与数组]]></title><link>https://blog.csdn.net/csdnxia/article/details/101453759</link><guid>https://blog.csdn.net/csdnxia/article/details/101453759</guid><author>csdnxia</author><pubDate>Thu, 26 Sep 2019 17:02:47 +0800</pubDate><description><![CDATA[List
val items = listOf("apple", "banana", "kiwi")
val sets = setOf(3, 5, 9)
//arraylist
var arrayList = ArrayList&lt;String&gt;()
var arrayList2 = arrayListOf(2, 3, 4)
//mutableList
var mutableList =...]]></description><category></category></item><item><title><![CDATA[Kotlin条件控制及循环]]></title><link>https://blog.csdn.net/csdnxia/article/details/101453517</link><guid>https://blog.csdn.net/csdnxia/article/details/101453517</guid><author>csdnxia</author><pubDate>Thu, 26 Sep 2019 16:55:35 +0800</pubDate><description><![CDATA[文章目录条件控制及分支if表达式区间when表达式Kotlin循环for循环while循环跳出循环
条件控制及分支
if表达式
一个 if 语句包含一个布尔表达式和一条或多条语句。
var max = a
if(a &gt; b) {
	max = a
}else {
	max = b
}
or
var max = if(a &gt; b) a else b

区间
kotlin中可以使用.., ...]]></description><category></category></item></channel></rss>