Android高性能数据库框架:LiteOrm
LiteOrm1、简介LiteOrm是一个小巧、强大、比系统自带数据库操作性能快1倍的 android ORM 框架类库,开发者一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。GitHub:https://github.com/litesuits/android-lite-orm2、Application初始化在自己的Application中进行LiteOrm数据库的初始化操作L
2026年以前手搓博客一千多篇。如今 Claw、Cursor、Claude 等 AI Agent 横空出世。只需一句话,AI 就能生成文章、调整格式、润色语言,并一键自动发布。欢迎来到 AI 驱动博客时代 🚀
LiteOrm1、简介LiteOrm是一个小巧、强大、比系统自带数据库操作性能快1倍的 android ORM 框架类库,开发者一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。GitHub:https://github.com/litesuits/android-lite-orm2、Application初始化在自己的Application中进行LiteOrm数据库的初始化操作L
Airbnb Engineering & Data ScienceAirflow Use Apache Airflow (incubating) to author workflows as directed acyclic graphs (DAGs) of tasks12,263Airpal Web UI for PrestoDB2,502Aerosolve A machine learning

优美的开源动效库:Lottie1、强大的动效LottieLottie是一个适用于Android,iOS,Web和Windows的库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并在移动设备和Web上原生渲染它们!GitHub:https://github.com/airbnb/lottie-androidLottie官网:http://airbn

.gitconfig配置文件git很方便,输入命令可以简化。比如输入git st 可以直接显示工作区状态。这是通过设置命令别名实现的。1、配置文件找到C:\Users{UserName}用户根目录下的.gitconfig文件,打开是一些基本配置信息设置的GitHub用户user解决git中文路径显示乱码添加alias别名2、命令行设置设置别名的方式删除别名:3、全局配置 --global设置con

在GitHub上看到一个很有意思的自定义控件:TitanicTextView,核心代码只有两个java源文件(TitanicTextView.java和Titanic.java)和一个.png的资源(见附件)。先来看看效果如何:TitanicTextView继承自TextView,直接当成TextView使用即可,在布局文件中使用:在代码中初始化TitanicTextView对象创建一个水波纹启动

mstsc:远程桌面连接疫情严重,学校开始在线上课,各个公司也都开始远程办公。网上远程办公软件很多,比如著名的TeamViewer。Windows自带一个远程软件远程桌面连接。1、mstsc打开远程连接程序快捷键Windows键+R调出快捷运行程序,输入远程桌面连接程序命令mstsc打开远程桌面连接程序一般公司内网都是保密的,需要专用VPN才能连接上。开启VPN之后就和本地局域网一样可以直接连公司

onConfigurationChanged()每当配置发生变化的时候,比如横竖屏切换(可以设置屏幕方向,参考《屏幕方向属性:android:screenOrientation》)。Activity的生命周期都会重新创建,比如很竖屏的切换,Log如下:每当很竖屏切换的时候都会执行onCreate()重新创建Activity,之前的Activity销毁。能不能不销毁呢,万一用户在输入数据(虽然可以通

安卓投屏工具:Scrcpy电脑连接Android手机,在电脑上显示手机画面,并且能够操作手机。曾经费了好多精力去找一个理想中连接控制手机的工具,网上都是些乱七八糟的还有广告。今天介绍一个开源好用的电脑连接Android手机工具Scrcpy。 GitHub地址:https://github.com/Genymobile/scrcpy1、下载下载下来解压,USB连接手机和电脑。无需 ROOT 手机,不

Activity页面全屏探究一些场景下需要应用全屏1、Window设置Flag在Activity的onCreate()方法中设置Flag:WindowManager.LayoutParams.FLAG_FULLSCREEN。了解更多Window Flag相关知识的详见《理解WindowManager》。2、在AndroidManifest中设置theme属性首先在values/styles.xml

在编码的时候,需要给类文件创建注释,把重复的工作抽取出来,让工作变得高效快速。按照步骤依次打开:设置->Editor->Live Templates选择右上角+新建模板Live Template:输入快速创建模板的缩写Abbreviation和描述Description关键的来了,需要输入Template Text创建模板样式。按照如下格式写就行了,变量按照$变量$的格式写:模板常用字段及其表达含

JNI开发 看了看时间,整整折腾一天才跑成功一个demo。内心又几乎奔溃,Android这个NDK能不能别乱动,哪怕是就隔不到1年都不兼容了。Android最操蛋的也就是这个了,API不稳定。尽管官方已经极力的在维护,早干嘛去了。Android一个重要的开发方向JNI开发,使用JNI接口可以完成Java代码对C/C++代码的调用,一般C/C++用来实现比较复杂的算法处理,比如图像、音视频的处理。这

WebView简单入门WebView是非常复杂的控件之一,用的不多,简单记录一些基本用法。1、布局中添加WebView直接在布局中添加WebView控件2、WebView加载网页使用loadUrl方法。①可以加载网页链接。②加载assets/目录下的html页面,需要加上前缀file:///android_asset/。关于assets资源另见 assets资源 一文。设置完url,还不能加载页面

ERR_CLEARTEXT_NOT_PERMITTEDGoogle针对 Android P版本(9.0)以后的应用程序,默认使用加密连接。访问http将会报错net::ERR_CLEARTEXT_NOT_PERMITTED。这也是Google为保证用户数据和设备的安全。解决办法还是有的,慢慢往下看1、usesCleartextTraffic最简单直接的方法:在AndroidManifest.xml

SpannableString1、SpannableString简介和String类似,不过SpannableString的功能更加丰富强大。给原本枯燥的文本添加各种功能和色彩。比如颜色、字体、超链接、表情、点击响应等功能。源码中关于SpannableString的解释如下:2、设置风格:SetSpan()关于SpannableString源码就70余行,除了几个构造函数,还有一个重要的方法set
Android 触摸事件剖析:从分发链到滑动冲突触摸是 Android 交互最基础的方式,但事件分发的"U 型链"、拦截与消费的规则、以及常见的滑动冲突,常常让人困惑——为什么子 ListView 收不到事件?为什么父布局一拦截,子 View 就再也滑不动?要彻底搞懂,必须理解事件分发的完整链路。本文从三个核心方法入手,讲透 MotionEvent 序列的流转与 mFirstTouchTarget
Android ScrollView 详解:从使用到原理与嵌套冲突ScrollView 是 Android 里最基础的"可滚动容器",看似简单,真到实战却处处是坑:嵌套 ListView 只显示一行、和 ViewPager 抢滑动、监听不到滚动方向、滚不到底、拉到边缘有碍眼的蓝色回弹……本文把 ScrollView 的基本使用、滑动监听、滚到顶底、滑动冲突、嵌套列表、消除回弹、底层原理一次性讲透—

NavigationView1、NavigationViewNavigationView是专为配合DrawerLayout的侧边栏使用的。关于DrawerLayout这里不多说了,详细用法参考我的另一篇博客抽屉布局DrawerLayout在布局文件中添加NavigationView,作为DrawerLayout的侧边栏拉出。注意属性layout_gravity="start",从左侧屏幕边缘拉出导

SwipeRefreshLayout 下拉刷新是经常遇到的场景,Android官方为我们提供了一个下拉刷新控件,准确的来说是容器。官方文档说明,SwipeRefreshLayout只能有一个子View,这一点和ScrollView一样。1、布局中添加SwipeRefreshLayout 使用SwipeRefreshLayout需要在build.gradle中添加额外的依赖,因为这属于materia

DrawerLayout大多数APP都会提供侧边菜单,在手机屏幕的左测或者右侧从外向内滑动拉出一个菜单。就是用DrawerLayout实现的,Android官方提供的侧边菜单栏。1、布局中添加DrawerLayoutDrawerLayout作为布局的根标签。主布局LinearLayout一定要放在紧接着第一个位置。而且大小一定要设置成match_parent2、添加侧边菜单在DrawerLayou