EditText里怎么自带删除按钮
前言对于普通的编辑框,它的功能就是负责接收用户输入的信息,在实际开发中,常常会有这样的设计,就是在输入内容后,编辑框的内部右侧会出现一个删除按钮,点击后会清空编辑框里的内容,这样的交互是极好的,那这又是怎么实现的呢? 解决思路毫无疑问是——继承自EditText,自定义文本编辑框 为EditText设置addTextChangeListener 创建内部类实现TextWatcher接口,监听输入框文本的变化 改写onTouchEvent事件,点击叉号位置,清空文本 通过setCompoundDrawablesWithIntrinsicBounds方法为EditText设置图片 提示,先准备一张png的图片,由于EditText是继承自TextView的,因此也有setCompoundDrawablesWithIntrinsicBounds方法。 自定义EditTextWithDel类继承自EditText,重写构造函数。 123456789101112131415public EditTextWithDel(Context context) { super(c...
Android中丰富的对话框
Android中对话框的展示,对人机交互有着重要的意义,常见的对话框包括: 警告对话框 进度对话框 日期选择对话框 时间选择对话框 普通列表对话框 单选列表对话框 多选列表对话框 带图标的列表对话框 对于特殊的对话框形式还可以自定义对话框 下面对这些对话框的使用进行说明: 警告对话框1234567891011121314151617181920212223242526272829private void showAlertDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setIcon(R.mipmap.ic_launcher); builder.setMessage("您有一笔2千万的汇款在处理,请问是您亲自操作的吗?"); builder.setPositiveButton(R.string.con...
关于BroadcastReceiver
为什么Android要使用各种BroadcastReceiver?前言作为Android四大组件之一的BroadcastReceiver(广播接收者),同Activity(活动)一样,经常被大家用到,网上也是一堆对它的讲解,那么为什么Android要用广播接收者这种机制呢? 作用 跨进程通信:一个 App 可以监听另一个 App 发出的广播(需权限)。 响应系统事件:如开机完成、网络变化、电量低、屏幕开关等。 模块解耦:组件之间无需直接引用,通过广播传递消息。 常见系统广播示例 广播 Action 说明 Intent.ACTION_BOOT_COMPLETED 开机完成 ConnectivityManager.CONNECTIVITY_ACTION 网络状态变化 Intent.ACTION_SCREEN_ON/OFF 屏幕亮/灭 Intent.ACTION_BATTERY_LOW 电量低 广播分为:普通广播和有序广播 Normal broadcasts(普通广播):Normal broadcasts是完全异步的可以同一时间被所有的接收者接收...
如何利用LruCache进行数据缓存
前言LruCache是什么?最初我也不知道去缓存请求到的数据,直接都是通过http请求,根据得到的返回数据展示到界面上,网络不好时要等待好久请求才能成功,或者干脆就失败了,这样给用户的体验是很不好的。之后在学习中,了解到了Android SDK中有处理缓存的LruCache,这个LruCache是在android.util包下的,是API level 12引入的,对于API level 12之前的系统可以使用support library v4中的LruCache。 LruCache是一个泛型类。 LRU是Least Recently Used的缩写,即“最近最少使用”,说明LRU缓存算法的淘汰策略是把最近最少使用的数据移除,让出内存给最新读取的数据。 它采用的是内存缓存数据,它内部采用一个LinkedHashMap以强引用的方式存储外界的缓存对象。 它是线程安全的。 其中提供了put、get、remove方法来完成缓存的添加、获取和移除操作。 每次添加的缓存对象会置顶,当缓存满时,LruCache会移除较早使用的缓存对象,然后再添加新的缓存对象。 通常我们需要用到的缓存策略...
开发利器之Android Studio
为什么选择 Android Studio? 官方支持:Google 官方 IDE,第一时间支持新特性(如 Jetpack、Compose)。 强大调试:内置 Layout Inspector、Profiler、APK 分析器。 智能提示:基于 IntelliJ,代码补全、重构、错误检查极佳。 Gradle 集成:灵活构建、依赖管理、多渠道打包。 模拟器快:HAXM 加速,性能接近真机。 必备插件推荐 ADB Idea:一键清理/重启 App。 GsonFormat:JSON 快速生成 Java Bean。 CodeGlance:右侧代码缩略图。 Markdown Support:完美支持 .md 文件预览。 提升效率的快捷键 功能 快捷键(Windows) 查找类 Ctrl + N 查找文件 Ctrl + Shift + N 重构重命名 Shift + F6 生成 Getter/Setter Alt + Insert 快速修复 Alt + Enter 小技巧 使用 TODO 注释,可在 TODO 面板集中管理。 Log.d(T...
Repo常用指令
Repo常用指令在使用 Git 进行版本控制时,repo 是一个由 Google 提供的工具,主要用于管理多个 Git 仓库(特别是在 Android 开发中)。它是对 Git 的封装,简化了多仓库项目的管理。 下面是一些常用的 repo 命令及其用途: 🌐 初始化和同步repo init初始化一个新的 repo 客户端。通常会指定一个 manifest 仓库地址。 1repo init -u <manifest仓库URL> [-b <分支名>] [-m <manifest文件名>] 示例: 1repo init -u https://android.googlesource.com/platform/manifest -b main -m default.xml repo sync从远程仓库下载代码并同步到本地。 1repo sync 常用选项: repo sync -c:只同步当前分支。 repo sync -j4:使用 4 个线程并行同步,加快速度。 repo sync --no-tags:不下载标签,节省带宽。 📁 项...
git提交与gerrit代码审查细节
git提交与gerrit代码审查细节代码拉取和提交 配置config文件12345Host gerrit HostName 10.10.1.127 Port 29418 User 1016739 IdentityFile ~/.ssh/id_ed25519 克隆1git clone "ssh://gerrit/<project path>" my-project && cd my-project && f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" http://10.10.1.127:30090/tools/hooks/commit-msg; chmod +x "$f" 仅克隆某个分支到本地目录1git clone -b <分支名> --single-branch <仓库地址> <目标目录> 代码补充提交12git add .git c...
git补丁
git补丁在Git中,打patch(生成补丁)和应用patch(应用补丁)是两个常见的操作,主要用于代码的修改分享或版本间的差异同步。下面是具体步骤: 生成Patch(打Patch) 确定变更范围:首先,确保你的工作区是干净的(没有未提交的更改),然后使用git add将你想要包含在补丁中的文件暂存起来。 创建补丁: 如果你只需要针对最后一次提交创建补丁,可以使用如下命令:1git format-patch -1 HEAD 这条命令会为最近的一次提交生成一个补丁文件。 若要为特定的提交ID创建补丁,可以替换HEAD为你想打补丁的提交ID。 如果需要对一系列的提交创建补丁,可以通过指定起始和结束提交ID来完成,例如:1git format-patch sha1^..sha2 如果你已经修改了一些文件,但还不想将这些更改提交到仓库中,并希望为这些未提交的更改创建一个补丁。首先使用git add将某些更改暂存,再使用如下命令,例如:1git diff --cached > staged-changes.patch 应用Patch(应用补丁) 获取补丁文件:确保你已经获得...
strings中的文本替换
strings中的文本替换 实际开发的过程中我们有时候会遇到,一个TextView里面会遇到会有一个一大串固定的文字,而里面的数字或者个别字需要根据后台的接口而展示的。这个时候我们最简单的方法就是在string.xml文件里 使用 %s、%1$s、%d、%1$d,而在页面展示的时候我们只需要用实际展示的文字或者数据替换掉这些占位符就可以了。 %1$s表示把第一个位置的占位符替换成string类型 %1$d表示把第一个位置的占位符替换成int类型 数字表示替换字符串中第几个被替换的位置,若一个字符串要替换两个int类型,在替换位置分别写%1$d和%2$d. %s 、%d为缩写方式,只替换一个位置,可以这么写。
git分支detached HEAD的解决方法
git分支detached HEAD的解决方法Detached HEAD 如何迁移到master分支上这个从理论上介绍了detached head的原理 Id CommandLine 1 git branch -v 2 git branch tmp 3 git checkout tmp 4 git checkout master 5 git merge tmp 6 git status 7 git branch -d tmp




