AI笔记本

2026年以前手搓博客一千多篇。如今 Claw、Cursor、Claude 等 AI Agent 横空出世。只需一句话,AI 就能生成文章、调整格式、润色语言,并一键自动发布。欢迎来到 AI 驱动博客时代 🚀

文章列表

git rebase -i 合并多个commit提交
Git

git rebase -i 合并多个commit提交

git rebase -i合并commit提交今天开发就真遇到了要合并多个commit提交,因为自己在开发的时候按照功能细分,一个功能开发一个commit提交。leader review代码的时候觉得提交太多,显得乱,提交划分的不应该这么细。而且review的过程中,前面几笔提交有要修改的地方,这下就很麻烦,需要退回去修改,在重新一笔一笔提交,而且后面的提交中又修改了前面的,也依赖前面要修改的地方

2.1k
Android获取设置 语言、地区
Android

Android获取设置 语言、地区

通过android.content.res.Configuration 类,可以修改语言参数,实现对应用语言的变更:得到配置Configuration之后,可以得到Locale对象,包含本地的一些信息:注意,Android N之后这个Configuration类的locale成员变量被标记为deprecate,不推荐再使用:Android N之后应当使用getLocales()方法,注意,如果在低

3.2k
解决Sublime中文乱码
Code

解决Sublime中文乱码

解决Sublime中文乱码用Sublime打开文本文件,中文显示乱码,又是老毛病。因为打开的文本文字编码采用的是ISO8859编码,关于编码在文字编码一文中有过了解。①打开菜单:首选项->Package Control②输入:Install Package,回车③搜索插件:convert to utf8④安装上即可自动转码,转成UTF-8,不会显示乱码了(重启Sublime)

1.7k
生成Serializable接口serialVersionUID
Code

生成Serializable接口serialVersionUID

生成Serializable接口serialVersionUID实现Serializable接口的类最好添加一个serialVersionUID,一般可以直接赋值为1L:或者由开发工具根据当前类的hash值计算一个serialVersionUID。AndroidStudio工具可以自动生成,进行如下设置:File–>Settings–>Editor–>Inspections–>Java–>Seri

1.6k
Android

Android 开发获取各种ID信息 获取线程ID、activityID、内核ID

各种id信息 获取线程ID、activityID、内核ID开发调试过程中需要打印Log,有时候需要分析一些数据,当前进程ID、主线程ID等。1、此进程的用户的标识符2、此进程的标识符3、调用线程的标识符4、当前线程的ID5、主线程的ID6、前应用的主线程id7、Activity任务栈的id8、该应用程序的内核用户ID9、应用程序应运行的进程的名称10、当前activity的信息

1.9k
Android

IntentFilter匹配

IntentFilter匹配通过Intent隐式启动Activity通过IntentFilter匹配合适的Activity进行启动。参考《启动Activity的几种方式》。其中主要通过action、category、data进行匹配,在Intent源码中可以查看到三个私有成员变量的定义:1、actionIntent必须且只能设置一个action。从源码可以看到,action定义为String类型的

1.8k
Code

MD5加密

MD5加密1、什么是MD5MD5全名: Message Digest Algorithm MD5(中文名为消息摘要算法第五版)。MD5算法具有如下特点:压缩性:任意长度的数据,算出的MD5值长度都是固定的(16位或32位)。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。强抗碰撞:已知原数据和其MD5值,想找到一个具有相同M

1.8k
Git

git cherry-pick

git cherry-pick将另一个分支的提交“捡”过来,再次在当前分支提交。需要知道本地另一个分支的提交的commit ID,或者gerrit上面的别人提交对应的cherry-pick链接。如果没有出现冲突,该命令将自动提交。如果不想cherry-pick自动产生提交,继续往后面看。1、cherry-pick 冲突如果要cherry-pick过来的提交和本地的修改有冲突,需要处理,解决完冲突之

1.7k
Android

Activity启动的Flag

Activity启动的FlagActivity有4中启动模式,参考Activity四种启动模式 。启动Activity的Intent添加flag,使用 Intent.addFlags(int flags) 方法。查看源码,可以看到总共有20种:后面简单介绍Intent几个常用的Flag。 1、FLAG_ACTIVITY_CLEAR_TOP这个Flag有没有很熟悉。SingleTask启动模式自带该

1.7k
Android重复点击
Android

Android重复点击

Android重复点击只要手速够快,就能突破限制。以前版本的微信有没有发现过,打开朋友圈,点击速度够快的话会打开两个朋友圈Activity,返回需要返回两次。我猜朋友圈Activity的launchMode肯定不是SingleTop和SingleInstance模式。关于Activity启动模式参考《Activity四种启动模式》。1、重复创建Activity问题如果点击一个View,启动Acti

1.7k
文字编码
Code

文字编码

文字编码文字编码不同往往会造成乱码等问题,如果不知道问题在哪,就会急得像热锅上的蚂蚁(法语乱码问题)。所以写代码还是要对各种不同的编码有所了解。1、ASCII码American Standard Code for Information 美国信息交换标准代码。ASCII码是单字节编码,使用7位二进制数表示。编码范围是0x00-0x7F(最高位保持为0,0 - 127),可表达128个字符。ASCI

2.0k
WebView报错: Error inflating class android.webkit.WebView
Android

WebView报错: Error inflating class android.webkit.WebView

WebView报错: Error inflating class android.webkit.WebView正常在布局中添加了一个WebView控件。关于WebView的使用参考《WebView简单入门》一文。运行的时候竟然奔溃,报错:... ...Error inflating class android.webkit.WebView查看Google 官方文档,有下面一句说明: ”当 Enab

2.2k
Android TabLayout标题
Android

Android TabLayout标题

Android TabLayout标题Tab标题也是Android应用中常见的UI,比如今日头条新闻页面上的切换Tab。Tab切换控制通常是个ViewPager一起使用,通过点击Tab页面不同的标签,控制ViewPager显示不同的页面。1、PagerTabStrip(不推荐)结合PagerTabStrip,可以添加标题,只需要在ViewPager布局内嵌套PagerTabStrip即可,不需要设

1.9k
Android对话框:Dialog
Android

Android对话框:Dialog

Android对话框:Dialog对话框在Android开发中使用频率很高,各种弹框及数据选择输入,比如:时间选择器:DatePicker和TimePicker默认的Dialog什么也没有,一般使用它的派生类AlertDialog,或者MaterialDialog。1、AlertDialogAlertDialog比较常用,通过AlertDialog.Builder创建AlertDialog对话框并

2.2k
Fragment碎片用法
Android

Fragment碎片用法

开发者>文档>指南>Fragment">Fragment碎片用法Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。Fragment依赖于Activity,不能独立存在一个Activity可以有多个Fragment一个Fragment可以被多个Activ

2.2k
ConstraintLayout 构建自适应界面
Android

ConstraintLayout 构建自适应界面

ConstraintLayout 从Android API 9以后Google推出了ConstraintLayout,而且从Android Studio 2.3 起,默认布局就是ConstraintLayout。 1、ConstraintLayout主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。RelativeLayout 也可以解决多层嵌套问题,但是ConstraintLayo

2.6k
屏幕方向属性:android:screenOrientation
Android

屏幕方向属性:android:screenOrientation

android:screenOrientation属性1、屏幕方向属性:screenOrientationAndroid应用程序中,android:screenOrientation用于控制activity启动时方向。 1.1、屏幕方向属性 屏幕方向android:screenOrientation取值可以为以下几种:unspecified 默认值,由系统决定,不同手机可能不一致landscape

2.2k 1
Android

Android屏幕适配

屏幕适配1、布局适配 Android 设备的形状和尺寸多种多样,因此应用的布局需要十分灵活。也就是说,布局应该从容应对不同的屏幕尺寸和方向,而不是为布局定义刚性尺寸,假定屏幕尺寸和宽高比是一定的。1.1、ConstraintLayout 要创建适用于不同屏幕尺寸的自适应布局,最佳做法就是将 ConstraintLayout 用作界面中的基本布局。使用 ConstraintLayout,您可以根据布

1.7k
Android

Android屏幕:dip、dpi、density、px

Android屏幕:dip、dpi、density、px1、Px (Pixel像素)也称为图像元素,是作为图像构成的基本单元,单个像素的大小并不固定,跟随屏幕大小和像素数量的关系变化(屏幕越大,像素越低,单个像素越大,反之亦然)。所以在使用像素作为设计单位时,在不同的设备上可能会有缩放或拉伸的情况。在Activity、Service或者View中可以获取到屏幕像素Px,Android都提供了get

1.7k 1