Android 常用资源汇总

  • 如果评论区没有及时回复,欢迎来公众号:ByteCode 咨询
  • 公众号:ByteCode。致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、算法、译文、系统源码相关的文章

颜色透明度汇总

半透明颜色值不同于平时使用的颜色,半透明颜色值共 8 位,例如:

android:background="#AAxxxxxx"

前 2 位(AA)是透明度,后 6 位(xxxxxx) 是颜色,透明度和颜色结合在一起就可以写出各种颜色的透明度。下面是透明度说明表。

透明度百分比 对应的值 备注
100% FF 完全不透明
95% F2
90% E6
85% D9
80% CC
75% BF
70% B3
65% A6
60% 99
55% 8C
50% 80 半透明 50%
45% 73
40% 40
35% 59
30% 4D
25% 40
20% 33
15% 26
10% 1A
5% 0D
0% 00 全透明

使用举例:

  • 全透明:#00000000
  • 半透明:#80000000
  • 不透明:#FF000000
  • 白色半透明:#80FFFFFF

不同像素密度的配置限定符

官方链接:https://developer.android.com/training/multiscreen/screendensities?hl=zh-cn

密度限定符 说明
ldpi 适用于低密度 (ldpi) 屏幕 (~ 120dpi) 的资源
mdpi 适用于中密度 (mdpi) 屏幕 (~ 160dpi) 的资源(这是基准密度)
hdpi 适用于高密度 (hdpi) 屏幕 (~ 240dpi) 的资源
xhdpi 适用于加高 (xhdpi) 密度屏幕 (~ 320dpi) 的资源
xxhdpi 适用于超超高密度 (xxhdpi) 屏幕 (~ 480dpi) 的资源
xxxhdpi 适用于超超超高密度 (xxxhdpi) 屏幕 (~ 640dpi) 的资源
nodpi 适用于所有密度的资源。这些是与密度无关的资源。无论当前屏幕的密度是多少,系统都不会缩放以此限定符标记的资源
tvdpi 适用于密度介于 mdpi 和 hdpi 之间的屏幕(约 213dpi)的资源。这不属于“主要”密度组。它主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将视情况对其进行缩放。如果您发现有必要提供 tvdpi 资源,应按一个系数来确定其大小,即 1.33*mdpi。例如,如果某张图片在 mdpi 屏幕上的大小为 100px x 100px,那么它在 tvdpi 屏幕上的大小应该为 133px x 133px

要针对不同的密度创建备用可绘制位图资源,您应遵循六种主要密度之间的 3:4:6:8:12:16 缩放比。例如,如果您有一个可绘制位图资源,它在中密度屏幕上的大小为 48x48 像素,那么它在其他各种密度的屏幕上的大小应该为:

  • 36x36 (0.75x) - 低密度 (ldpi)
  • 48x48(1.0x 基准)- 中密度 (mdpi)
  • 72x72 (1.5x) - 高密度 (hdpi)
  • 96x96 (2.0x) - 超高密度 (xhdpi)
  • 144x144 (3.0x) - 超超高密度 (xxhdpi)
  • 192x192 (4.0x) - 超超超高密度 (xxxhdpi)

Android studio 插件版本与 gradle 版本对应关系

Android studio 插件版本与 gradle 版本对应关系如下所示:

AS 插件版本 Gradle 版本
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2.0 - 1.3.1 2.2.1 - 2.9
1.5.0 2.2.1 - 2.13
2.0.0 - 2.1.2 2.10 - 2.13
2.1.3 - 2.2.3 2.14.1+
2.3.0+ 3.3+
3.0.0+ 4.1+
3.1.0+ 4.4+
3.2.0 - 3.2.1 4.6+
3.3.0 - 3.3.3 4.10.1+
3.4.0 - 3.4.3 5.1.1+
3.5.0 - 3.5.4 5.4.1+
3.6.0 - 3.6.4 5.6.4+
4.0.0+ 6.1.1+
4.1.0+ 6.5+

以上信息参考 Android Gradle 插件版本说明

Android Studio 根据动物名称来命名,而 Android 系统 10.0 之前都是以甜点的方式来命名,我们在来会汇总一下 Android 系统的命名方案。

2007 年 11 月 5 日发布最初的版本(Android 0.5),至今 Android 发行了多个版本,Android 操作系统有预发行的内部版本,分别为铁臂阿童木(Astro)与机器人班亭(Bender),从 2009 年 5 月开始, Android 的版本代号以甜点来命名,且每个代号间的前缀以英文本母序接续排列。

Android 系统名字、版本、API level 的对应关系

Android 系统名字、版本、API level 的对应关系如下所示:

名称 版本号 发版日期 API 级别 VERSION_CODE
Android 1.0 1.0 2008年9月23日 1 BASE
Android 1.1 1.1 2009年2月9日 2 BASE_1_1
Android Cupcake(纸杯蛋糕) 1.5 2009年4月27日 3 CUPCAKE
Android Donut(甜甜圈) 1.6 2009年9月15日 4 DONUT
Android Eclair(闪电泡芙) 2.0 – 2.1 2009年10月26日 5 – 7 ECLAIR_MR1(2.1.x)
ECLAIR_0_1(2.0.1)
ECLAIR(2.0)
Android Froyo(优格冰淇淋) 2.2 – 2.2.3 2010年5月20日 8 FROYO
Android Gingerbread(姜饼) 2.3 – 2.3.7 2010年12月6日 9 - 10 GINGERBREAD_MR1( 2.3.3 - 2.3.4)
GINGERBREAD(2.3、2.3.1、2.3.2)
Android Honeycomb(蜂巢) 3.0 – 3.2.6 2011年2月22日 11 - 13 HONEYCOMB_MR2(3.2)
HONEYCOMB_MR1(3.1x)
HONEYCOMB(3.0.x)
Android Ice Cream Sandwich(冰淇淋三明治) 4.0 – 4.0.4 2011年10月18日 14 - 15 ICE_CREAM_SANDWICH_MR1(4.0.3、4.0.4)
ICE_CREAM_SANDWICH (4.0、4.0.1、4.0.2)
Android Jelly Bean(果冻豆) 4.1 – 4.3.1 2012年7月9日 16 – 18 JELLY_BEAN_MR2(4.3)
JELLY_BEAN_MR1(4.2 - 4.2.2)
JELLY_BEAN(4.1 - 4.1.1)
Android KitKat(奇巧巧克力) 4.4 – 4.4.4 2013年10月31日 19 - 20 KITKAT
Android Lollipop(棒棒糖) 5.0 – 5.1.1 2014年11月12日 21 - 22 LOLLIPOP_MR1(5.1)
LOLLIPOP(5.0)
Android Marshmallow(棉花糖) 6.0 – 6.0.1 2015年10月5日 23 M
Android Nougat(牛轧糖) 7.0 – 7.1.2 2016年8月22日 24 - 25 N_MR1(7.1 - 7.11) N(7.0)
Android Oreo(奥利奥) 8.0 – 8.1 2017年8月21日 26 – 27 O_MR1(8.1) O (8.0)
Android Pie(派) 9 2018年8月6日 28 P
Android 10 10 2019年9月3日 29 Q
Android 11 11 2020年2月19日 30 R
Android 12 12 2021年10月 31 S

从 Android Q 开始不再以甜品命名,且直接称 Android Q 为 Android 10。以上信息参考 uses-sdk

跳转到系统各个设置界面

跳转常用方法如下:

// 第一个参:包名
// 第二个参数:各个设置的类名(可以参考下面)
ComponentName cm = new ComponentName("com.android.settings",
"com.android.settings.RadioInfo");
intent.setComponent(cm);
intent.setAction("android.intent.action.VIEW");
startActivity(intent);

各个设置的类名汇总

com.android.settings.AccessibilitySettings 辅助功能设置
com.android.settings.ActivityPicker 选择活动
com.android.settings.ApnSettings APN设置
com.android.settings.ApplicationSettings 应用程序设置
com.android.settings.BandMode 设置GSM/UMTS波段
com.android.settings.BatteryInfo 电池信息
com.android.settings.DateTimeSettings 日期和坝上旅游网时间设置
com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置
com.android.settings.DevelopmentSettings 应用程序设置=》开发设置
com.android.settings.DeviceAdminSettings 设备管理器
com.android.settings.DeviceInfoSettings 关于手机
com.android.settings.Display 显示——设置显示字体大小及预览
com.android.settings.DisplaySettings 显示设置
com.android.settings.DockSettings 底座设置
com.android.settings.IccLockSettings SIM卡锁定设置
com.android.settings.InstalledAppDetails 语言和键盘设置
com.android.settings.LanguageSettings 语言和键盘设置
com.android.settings.LocalePicker 选择手机语言
com.android.settings.LocalePickerInSetupWizard 选择手机语言
com.android.settings.ManageApplications 已下载(安装)软件列表
com.android.settings.MasterClear 恢复出厂设置
com.android.settings.MediaFormat 格式化手机闪存
com.android.settings.PhysicalKeyboardSettings 设置键盘
com.android.settings.PrivacySettings 隐私设置
com.android.settings.ProxySelector 代理设置
com.android.settings.RadioInfo 手机信息
com.android.settings.RunningServices 正在运行的程序(服务)
com.android.settings.SecuritySettings 位置和安全设置
com.android.settings.Settings 系统设置
com.android.settings.SettingsSafetyLegalActivity 安全信息
com.android.settings.SoundSettings 声音设置
com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息
com.android.settings.TetherSettings 绑定与便携式热点
com.android.settings.TextToSpeechSettings 文字转语音设置
com.android.settings.UsageStats 使用情况统计
com.android.settings.UserDictionarySettings 用户词典
com.android.settings.VoiceInputOutputSettings 语音输入与输出设置
com.android.settings.WirelessSettings 无线和网络设置

Android 设备信息以及系统 API

Build 系列

Build 系列 android.os.Build
系统版本 RELEASE 获取系统版本字符串。如4.1.2 或2.2 或2.3等 4.4.4
系统版本值 SDK_INT 19
品牌 BRAND 获取设备品牌 Huawei
型号 MODEL 获取手机的型号 HUAWEI G750-T01
ID ID 设备版本号 HUAWEITAG-TLOO
DISPLAY DISPLAY 获取设备显示的版本包(在系统设置中显示为版本号)和ID一样 TAG-TLOOCO1B166-TLOO
产品名 PRODUCT 整个产品的名称 G750-T01
制造商 MANUFACTURER 获取设备制造商 HUAWEI
设备名 DEVICE 获取设备驱动名称 hwG750-T01
硬件 HARDWARE 设备硬件名称,一般和基板名称一样(BOARD) mt6592
指纹 FINGERPRINT 设备的唯一标识。由设备的多个信息拼接合成 Huawei/G750-T01/hwG750-T01:4.2.2/HuaweiG750-T01/C00B152:user/ota-rel-keys,release-keys
串口序列号 SERIAL 返回串口序列号 YGKBBBB5C1711949
设备版本类型 TYPE 主要为user 或eng. user
描述build的标签 TAGS 设备标签。如release-keys 或测试的 test-keys release-keys
设备主机地址 HOST 设备主机地址 scmbuild
设备用户名 USER 基本上都为android-build queen
固件开发版本代号 codename 设备当前的系统开发代号,一般使用REL代替 REL
源码控制版本号 build_incremental 系统源代码控制值,一个数字或者git hash值 C01B166
主板 board 获取设备基板名称 TAG-TL00
主板引导程序 bootloader 获取设备引导程序版本号 unkonwn
Build时间 time Build时间 1476084456000
系统的API级别 SDK_INT 数字表示 19
cpu指令集1 CPU_ABI 获取设备指令集名称(CPU的类型) arm64-v8a
cpu指令集1 CPU_ABI2

Android 硬件设备信息:

名称 接口参数名称 备注 示例
序列号 getDeviceId 序列号IMEI 865872025238821
andrlid_id getString android_id bcbc00f09479aa5b
手机号码 getLine1Number 手机号码 13117511178
手机卡序列号 getSimSerialNumber 手机卡序列号 89860179328595969501
手机卡IMSI号 getSubscriberId IMSI 460017932859596
手机卡国家 getSimCountryIso 手机卡国家 cn
运营商 getSimOperator 运营商 46001
运营商名字 getSimOperatorName 运营商名字 中国联通
国家iso代码 getNetworkCountryIso 国家iso代码字 cn
网络运营商类型 getNetworkOperator 返回MCC+MNC代码 (SIM卡运营商国家代码和运营商网络代码)(IMSI) 46001
网络类型名 getNetworkOperatorName 返回移动网络运营商的名字(SPN) 中国联通
网络 getNetworkType 网络 3
手机类型 getPhoneType 机类型 1
手机卡状态 getSimState 1
mac地址 getMacAddress mac地址 a8:a6:68:a3:d9:ef
蓝牙名称 getName HUAWEI TAG-TL00
固件版本 固件版本 无线电固件版本号,通常是不可用的 MOLY.WR8.W1328.MD.TG.MP.V1.P22, 2014/07/15 19:57

WifiManager

WifiManager WIFI相关
蓝牙地址 getAddress 蓝牙地址MAC地址 6a: cd:57:f2:3b:59
无线路由器名 getSSID WIFI名字 210e03fcf0
无线路由器地址 getBSSID ce:ea:8c:1a:5c:b2
内网ip(wifl可用) getIpAddress 可以用代码转成192.168形式 -2023511872

Display 屏幕相关

Display 屏幕相关
屏幕密度 density 屏幕密度(像素比例:0.75/1.0/1.5/2.0) 2.0
屏幕密度 densityDpi 屏幕密度(每寸像素:120/160/240/320) 480
手机内置分辨率 getWidth 内置好的不准确已废弃API 720
手机内置分辨率 getHeight
字体缩放比例 scaledDensity 2.0

致力于分享一系列 Android 系统源码、逆向分析、算法、翻译、Jetpack 源码相关的文章,在技术的道路上一起前进

Android10 源码分析

正在写一系列的 Android 10 源码分析的文章,了解系统源码,不仅有助于分析问题,在面试过程中,对我们也是非常有帮助的,如果你同我一样喜欢研究 Android 源码,可以关注我 GitHub 上的 Android10-Source-Analysis

算法题库的归纳和总结

由于 LeetCode 的题库庞大,每个分类都能筛选出数百道题,由于每个人的精力有限,不可能刷完所有题目,因此我按照经典类型题目去分类、和题目的难易程度去排序。

  • 数据结构: 数组、栈、队列、字符串、链表、树……
  • 算法: 查找算法、搜索算法、位运算、排序、数学、……

每道题目都会用 Java 和 kotlin 去实现,并且每道题目都有解题思路,如果你同我一样喜欢算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:Leetcode-Solutions-with-Java-And-Kotlin

精选国外的技术文章

目前正在整理和翻译一系列精选国外的技术文章,不仅仅是翻译,很多优秀的英文技术文章提供了很好思路和方法,每篇文章都会有译者思考部分,对原文的更加深入的解读,可以关注我 GitHub 上的 Technical-Article-Translation

评论