百纵科技:美国洛杉矶云主机4核8G大带宽仅799元/月;圣何塞vps,10M带宽仅38元/月
|
![]() |
![]() |
![]() |
| 【性价之王】 | 【线路之王】 | 【价格之王】 | 【配置之王】 |
| 【免费之王】 | 【香港首推】 | 【梯子之王】 | 【独服之王】 |
1、什么是 IconFont?
IconFont 顾名思义是字体图标,它的图标藏 xxx.ttf 字体文件里面,看着是个图标,其实却是个文字,这就是所谓的 IconFont。
IconFont 是矢量图标。
2、IconFont 的优缺点
(1)优点:
由于 IconFont 是矢量图标,所以可以轻松解决图标适配问题。
因为其本质是个字体图标,所以可以通过代码修改其字体图标大小、颜色等。
图标以字体文件的形式存在项目中(.ttf 文件一般放在 assets 文件夹下),体积小可以减小 APK 的体积。
一套图标资源可以在不同平台使用(android、ios、web)。
资源维护方便。
(2)缺点:
需要自定义 svg 图片,并将其转换为 .ttf 文件,图标制作成本比较高(这块的工作量主要在 UI 同学)。
添加图标是需要重新制作 .ttf 文件。
只能支持单色,不支持渐变色图标。
3、引入 Android-Iconics
为什么选择 Android-Iconics?
调研市面上各种关于 IconFont 的实现方案,通过对比功能支持、Star 数量、是否一直在维护中等等,Android-Iconics 脱颖而出。
github 地址:https://github.com/mikepenz/Android-Iconics
dependencies {
// AndroidX Appcompat 支持
implementation “androidx.appcompat:appcompat:1.3.1”
// 核心库 iconics
implementation “com.mikepenz:iconics-core:5.3.3”
// 添加自定义视图依赖(可选项)
implementation “com.mikepenz:iconics-views:5.3.3”
// 选择你想要的字体(可选项)
implementation ‘com.mikepenz:google-material-typeface:4.0.0.2-kotlin@aar’
implementation ‘com.mikepenz:google-material-typeface-{outlined|rounded|sharp}:4.0.0.1-kotlin@aar’
implementation ‘com.mikepenz:material-design-iconic-typeface:2.2.0.8-kotlin@aar’
implementation ‘com.mikepenz:fontawesome-typeface:5.9.0.2-kotlin@aar’
implementation ‘com.mikepenz:octicons-typeface:11.1.0.0-kotlin@aar’
implementation ‘com.mikepenz:meteocons-typeface:1.1.0.7-kotlin@aar’
implementation ‘com.mikepenz:community-material-typeface:6.4.95.0-kotlin@aar’
implementation ‘com.mikepenz:weather-icons-typeface:2.0.10.7-kotlin@aar’
implementation ‘com.mikepenz:typeicons-typeface:2.0.7.7-kotlin@aar’
implementation ‘com.mikepenz:entypo-typeface:1.0.0.7-kotlin@aar’
implementation ‘com.mikepenz:devicon-typeface:2.0.0.7-kotlin@aar’
implementation ‘com.mikepenz:foundation-icons-typeface:3.0.0.7-kotlin@aar’
implementation ‘com.mikepenz:ionicons-typeface:2.0.1.7-kotlin@aar’
implementation ‘com.mikepenz:pixeden-7-stroke-typeface:1.2.0.5-kotlin@aar’
implementation ‘com.mikepenz:material-design-icons-dx-typeface:5.0.1.2-kotlin@aar’
implementation ‘com.mikepenz:phosphor-typeface:1.0.0.0-kotlin@aar’
}
注意:通过 gradle 引入最新版本,compileSdk、buildTools 需要 31+,targetSdk 30+,其次其 XML 属性支持需要 API 24+ ,且各种 AndroidX 相关库需要较新版本,所以不适应咱们项目,故通过源码+修改方式引入上述开源库,且消除上述所有限制。
4、xml 属性解析
(1)Iconics
(2)IconicsAnimateChanges
(3)IconicsImageButton、IconicsImageView
(4)IconicsButton、IconicsTextView
(5)IconicsCompoundButton
(6)IconicsCheckableTextView
5、如何使用
(1)注册方式一,通过 Application
class CustomApplication : Application() {
override fun onCreate() {
super.onCreate()
// 注册自定义字体
Iconics.registerFont(ChangbaFont())
}
}
(2)注册方式二,通过 AndroidX 的 startup-runtime
官方介绍:The App Startup library provides a straightforward, performant way to initialize components at application startup. Both library developers and app developers can use App Startup to streamline startup sequences and explicitly set the order of initialization.Instead of defining separate content providers for each component you need to initialize, App Startup allows you to define component initializers that share a single content provider. This can significantly improve app startup time.
介绍翻译:应用程序启动库提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发人员和应用程序开发人员都可以使用应用程序启动来简化启动顺序,并显式设置初始化顺序。应用程序启动允许您定义共享单个内容提供程序的组件初始值设定项,而不是为需要初始化的每个组件定义单独的内容提供程序。这可以显著缩短应用程序启动时间。
特性1:可以共享单个Contentprovider。
特性2:可以明确地设置初始化顺序。
探究:App Startup真的能减少启动耗时吗?
// 添加库支持
implementation “androidx.startup:startup-runtime:1.1.0”
// 使用
<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <!-- 注册字体库 --> <meta-data android:name="com.open.iconics.iconfont.Initializer" android:value="androidx.startup" /> <!-- 注册旋转动画 --> <meta-data android:name="com.open.iconics.animation.SpinProcessor" android:value="androidx.startup" /> <!-- 注册透明度动画 --> <meta-data android:name="com.open.iconics.animation.BlinkAlphaProcessor" android:value="androidx.startup" /> <!-- 注册缩放动画 --> <meta-data android:name="com.open.iconics.animation.BlinkScaleProcessor" android:value="androidx.startup" /></provider>...
(3)Iconics 使用
// 限定原生的 TextView、Button
Iconics.Builder()
.style(BackgroundColorSpan(ContextCompat.getColor(this, R.color.transparent)))
.style(RelativeSizeSpan(1f))
.style(ForegroundColorSpan(ContextCompat.getColor(this, R.color.red)))
.styleFor(
DevIcon.Icon.dev_ssh_plain,//”font_danmu_off”,
BackgroundColorSpan(Color.RED),
ForegroundColorSpan(Color.parseColor(“#ee000000”)),
RelativeSizeSpan(2f)
)
.font(DevIcon)
.on(btn)
.build()
(4)IconicsDrawable 使用
val drawable = IconicsDrawable(this@IconicsButtonActivity, DevIcon.Icon.dev_ssh_plain)
.apply {
sizeDp = 20
sizeX = IconicsSize.dp(48)
sizeY = IconicsSize.dp(32)
paddingPx = 4
paddingDp = 4
roundedCornersDp = 8
colorString = “#deFF0000”
}
.toBitmap()
iv_btn_iconics.icon = drawable
iv_btn_iconics.setImageBitmap(drawable)
(5)automirror 属性
// app:iiv_automirror=”true” 属性需要配合
// android:layoutDirection=”rtl” 使用
<com.open.iconics.view.IconicsImageView android:layout_width="72dp" android:layout_height="72dp" android:padding="24dp" app:iiv_automirror="true" app:iiv_color="?android:textColorPrimary" app:iiv_icon="font_singasong" /><com.open.iconics.view.IconicsImageView android:layout_width="72dp" android:layout_height="72dp" android:padding="24dp" app:iiv_automirror="false" app:iiv_color="?android:textColorPrimary" app:iiv_icon="font_singasong" />
6、注意事项
(1)原则上禁止使用
// 当你使用 Iconics* 相关控件的时候,例如: IconicsImageButton
// 你使用了 iconics* 相关 xml 属性,你又使用了 src 属性,这样会导致 src 属性无效
// 代码中设置 xxx.setImageResource(R.drawable.xxx) 同样无效
iv_btn_iconics.setImageResource(R.drawable.common_favorite)
(2)兼容Appcompat v1.4.x:Appcompat v1.4.x 在所有AppCompat视图中引入了默认启用的表情符号支持,这会导致 IconicsView 视图的正常使用。
// 禁止表情符号支持
app:emojiCompatEnabled=”false”
[主机测评]历史优惠活动内容
猜你可能想看的VPS
- 微基主机:香港沙田Gen3系列云服务器五折49.5元/月起(100M大带 香港VPS[主机]
- 2023年 IDC市场结构和方向的深度分析 全球[VPS测评]
- 中国云计算,能啃的只剩硬骨头了 全球[VPS测评]
- 又一跨境电商产业园落户!中山石岐签约引进16个项目 全球[VPS测评]
- 跨境电商拔节生长关键期,宁波政协委员月谈会精准助力! 全球[VPS测评]
- 全球云lovps,香港CN2线路vps 新品七折月付49元 香港VPS[主机]
- 宏海数据9.9云服务器:香港VPS CN2线路1核1G 9.9/首月 香港VPS[主机]
- dogyun:2020国庆促销,7.1折优惠,多线路vps-香港CN2、 日本VPS[主机]
- 磐逸云:全场8折优惠,1核1G香港套餐月付24元,日本NNT线路套餐,月 日本VPS[主机]
- 硅云服务器拼团活动:香港云服务器1核1G,拼团价仅98元/年 香港VPS[主机]
- 麻花云双12年终盛典:香港云主机9元起,老客户续费6折;安徽BGP线路v 香港VPS[主机]
- 印象云:1核/1G/40G固态/800G/50Mbps/洛杉矶高防vps 全球[VPS测评]
- 六六云:1核/1GB/20GB硬盘/500GB流量/30Mbps/KVM 香港VPS[主机]
- 香港云服务器性价比高:香港云服务器哪家便宜 香港VPS[主机]
- 华为云香港企业级云服务器优惠:4核8G5M香港云服务器低至4764元/年 香港VPS[主机]
- 后浪云:优惠码”2021″,美国/香港2核4G2M云服务器仅32.5元/ 美国VPS[主机]
- RAKsmart:E3服务器秒杀$30/月起,韩国服务器,香港/日本/美 站群服务器[IP]
- 极光KVM:1核/1G/40G/100Mbps/美国GIA,年付199元 美国VPS[主机]
- Vmshell:200MB/S香港大宽带vps免费领取,免费云主机,不限 香港VPS[主机]
- 百纵科技:美国洛杉矶云主机4核8G大带宽仅799元/月;圣何塞vps,1 美国VPS[主机]
- 腾讯云vps优惠:288元/3年,可选机房,北京/上海/广州/重庆/香港 美国VPS[主机]
- 孤狼云:香港安畅、沙田CN2 VPS,1核/1G/40G硬盘,10元/月 香港VPS[主机]
- 漂亮的Css3响应侧边栏菜单,动画风格侧边栏导航菜单样式 全球[VPS测评]
- BBR对比BBR2BBRPLUSBBR2CAKE锐速哪个效果好 全球[VPS测评]
- 百看不厌的文案,抖音唯美文案。 全球[VPS测评]
- 拼多多也要做跨境电商?出海之路能一帆风顺吗,了解一下 全球[VPS测评]
- 戈登云VPS,6折,充值送50%,香港cn2,美国cn云服务器,2核2G 美国VPS[主机]
- 麻花云怎么样?安徽移动VPS月付29元 香港VPS 2M月付21元 香港VPS[主机]
- anyhk香港HKT商宽NAT VPS,1Gbps无限流量,终身8折¥3 香港VPS[主机]
- 麻花云:香港CN2VPS月付19元起,安徽移动8核/16G/20M独服2 香港VPS[主机]
转载请注明原文地址: http://140.238.13.167:12355/read-250974.html











