链表问题不会做?LC狂刷50道链表算法总结出这9道典型题,套路很简单(1)

文章介绍了如何在Android应用中实现黑夜模式的资源定制,通过`overridefunapplySkin`方法和`SkinManager`类,继承Resource并覆盖getColor和getDrawable方法。内容包括资源目录设置、颜色和图标资源的定义,以及定制资源的核心原理。同时还提及了面试技巧和资源包的内容结构。
摘要由CSDN通过智能技术生成

override fun applySkin() {
mTextPaint.color = resources.getColor(R.color.text_color_input_hint)
background = resources.getDrawable(R.drawable.selector_login_edit_bkg)
setTextColor(resources.getColor(R.color.text_color_minor))
setHintTextColor(resources.getColor(R.color.text_color_input_hint))
}

}

4.资源定义

这里拿黑夜模式进行举例

添加资源目录

首先需要在build.gralde文件的android节点中添加res-nigit

android {

sourceSets {
main {
res.srcDirs = [‘src/main/res’, ‘src/main/res-night’]
}

}
}

定义资源名

黑夜模式的资源需要在res_night中加入同名的_night后缀,如果未添加,默认会取白天模式的。

drawable.png

colors.xml也需要这样定义。

<?xml version="1.0" encoding="utf-8"?> #333333 #00574B #26B36D

#ffffff
#cccccc
#909399

#333333>
#2d2d2d

#ED4E4E
#6C9DD9

#DE000000
#8A000000
#3f717171
#333333

在这里,推荐大家如果使用图标,最好用SVG图,除了占用空间小、缩放无质量损失以外,添加对于黑夜模式的时候,也只需要修改SVG文件色值即可达到。

三、原理

其实核心思想上面也提到了,就是继承Resource,覆写了getColor()getDrawable()方法。

class CustomResources(val resources: Resources) :
Resources(resources.assets, resources.displayMetrics, resources.configuration) {

override fun getColor(id: Int): Int {
return SkinManager.instance.getColor(id)
}

override fun getDrawable(id: Int): Drawable {
return SkinManager.instance.getDrawable(id)
}

fun updateConfig(config: Configuration?, metrics: DisplayMetrics?) {
resources.updateConfiguration(config, metrics)
}
}

然后在SkinManager中通过SkinResources获取相应主题的资源。

class SkinResources {

fun getSkinColor(context: Context, id:Int): Int {
val resources = context.resources
val type = resources.getResourceTypeName(id)
val color = resources.getResourceEntryName(id)
val identifier = getIdentifier(context, nameConvert(color), type)
return when {
identifier != 0 -> resources.getColor(identifier)
else -> resources.getColor(id)
}
}
fun getSkinDrawable(context:Context,id:Int): Drawable {
val resources = context.resources
val type = resources.getResourceTypeName(id)
val drawable = resources.getResourceEntryName(id)
val identifier = getIdentifier(context, nameConvert(drawable), type)
return when {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值