在地图应用开发过程中 换肤是一个必须要考虑的问题,
那么怎么做到一键换肤,和支持一个项目多套皮肤呢?
技术点,如果是按照手机的换肤方案有两点:
1.获取activity的LayoutInflate,设置Factory2 来保存加载的view
2.创建皮肤包的Resource,指定AssetManager和皮肤包的路径。
这样就能达到换肤的目的。
在车机上,一个项目如果要支持多套皮肤的话,除了系统支持皮肤商城的情况之外,还想要支持多套皮肤。这个是个好问题。
比如一个项目 支持普通的白天和夜间两种样式,另外还支持机甲的样式。那么该如何解决这个问题呢?
如果是继续采用手机的方案,白天和夜间的样式,可以支持,但另外添加了一套机甲的样式,这个该怎么获取资源呢?
当然如果能够自己把资源包打进来然后加载到指定目录中,其实也还是可以使用手机的方案。如果没有资源包,而是就是集成到apk中,那么该怎么做呢?
想到的办法 就是针对资源名字加后缀,然后在使用的时候 通过名字来判断是否需要加后缀来完成查找对应的资源文件。也是可以做到换肤的目的。
对于手机上的方案,有这样一个疑问,如果把所有的view都缓存起来,那么在进行切换的时候,查找资源和替换资源是不是也很耗时?毕竟如果所有的view都加载了,那可是很多的view啊。这样即使在view只展示少部分的控件,那么进行替换就还是有较大的CPU和内存资源消耗了,
能不能使用多少就换多少。这样在切换的时候 就能够真正的减少资源消耗,并且车机系统中的性能也能得到保障呢。
那就采用比较笨的方法,每个页面自己来保存或者设置,这样只做当前正在展示的view,其他隐藏的view不做操作,只有切换到前台的时候 再做操作就行了。
网友评论