于是我就想到定义很多种样式, 如:
mini_text
mini_text_Theme1
mini_text_Theme2
当用户先择了Theme2时,就把R.style.mini_text的值替换为R.style.mini_text_Theme2的值.
于是就引出一个问题,怎样才能让自动生成的R类里没有final限制符?
13 个解决方案
#1
不使用系统自带资源处理呗
#2
这个应该不是很难,就是定义一些图片和theme,style什么的
#3
有其他编程经验的人都会想当然的认为theme是style的父集, 只要改了theme, style集也会跟着更改。
我觉android不完善的体现之一就是,很多想当然的都没有....
我觉android不完善的体现之一就是,很多想当然的都没有....
#4
#5
想通过编译资源来换的可能性很小,一般都是从文件系统中读取资源文件。
因为皮肤必须是可以动态增加的,如果使用r资源,就只能使用编译时的那些东西,显然不符合要求。
做到使用特定的接口设置图片资源和样式,那改皮肤是水到渠成的事情。
因为皮肤必须是可以动态增加的,如果使用r资源,就只能使用编译时的那些东西,显然不符合要求。
做到使用特定的接口设置图片资源和样式,那改皮肤是水到渠成的事情。
#6
搬个小凳子,坐等大神出马。。。。
#7
实现了这种思路了,但无效,估计是布局文件编译后,直接就确定写死了style的int值了,而不是运行时来确定的.
散分了....
散分了....
#8
呀、还真没考虑过这个问题呢
等大牛出来解答
等大牛出来解答
#9
我没有想出好办法,Mark一下,我觉得苦想怎样才能让自动生成的R类里没有final限制符这条路,不会得到答案的。
#10
我己经让自动生成的R类里没有final限制符了:
找到E:\android-sdk\platform-tools\aapt.exe 用UltraEdit打开
切换到非二进制模式, 搜索final, 找到第1345行的final
切换到二进制模式, 将final每个字符对应的16进制,改为20
最后保存一下就可以了
找到E:\android-sdk\platform-tools\aapt.exe 用UltraEdit打开
切换到非二进制模式, 搜索final, 找到第1345行的final
切换到二进制模式, 将final每个字符对应的16进制,改为20
最后保存一下就可以了
#11
去掉final后,能否实现换肤??
#12
好办法!
#13
自己实现了两种方式的换肤
其实可以从资源访问和资源XML解析的角度去处理
有兴趣可以私聊
改动涉及到AAPT PackageManger ZipIO Resource XMLParse
其实可以从资源访问和资源XML解析的角度去处理
有兴趣可以私聊
改动涉及到AAPT PackageManger ZipIO Resource XMLParse
#1
不使用系统自带资源处理呗
#2
这个应该不是很难,就是定义一些图片和theme,style什么的
#3
有其他编程经验的人都会想当然的认为theme是style的父集, 只要改了theme, style集也会跟着更改。
我觉android不完善的体现之一就是,很多想当然的都没有....
我觉android不完善的体现之一就是,很多想当然的都没有....
#4
#5
想通过编译资源来换的可能性很小,一般都是从文件系统中读取资源文件。
因为皮肤必须是可以动态增加的,如果使用r资源,就只能使用编译时的那些东西,显然不符合要求。
做到使用特定的接口设置图片资源和样式,那改皮肤是水到渠成的事情。
因为皮肤必须是可以动态增加的,如果使用r资源,就只能使用编译时的那些东西,显然不符合要求。
做到使用特定的接口设置图片资源和样式,那改皮肤是水到渠成的事情。
#6
搬个小凳子,坐等大神出马。。。。
#7
实现了这种思路了,但无效,估计是布局文件编译后,直接就确定写死了style的int值了,而不是运行时来确定的.
散分了....
散分了....
#8
呀、还真没考虑过这个问题呢
等大牛出来解答
等大牛出来解答
#9
我没有想出好办法,Mark一下,我觉得苦想怎样才能让自动生成的R类里没有final限制符这条路,不会得到答案的。
#10
我己经让自动生成的R类里没有final限制符了:
找到E:\android-sdk\platform-tools\aapt.exe 用UltraEdit打开
切换到非二进制模式, 搜索final, 找到第1345行的final
切换到二进制模式, 将final每个字符对应的16进制,改为20
最后保存一下就可以了
找到E:\android-sdk\platform-tools\aapt.exe 用UltraEdit打开
切换到非二进制模式, 搜索final, 找到第1345行的final
切换到二进制模式, 将final每个字符对应的16进制,改为20
最后保存一下就可以了
#11
去掉final后,能否实现换肤??
#12
好办法!
#13
自己实现了两种方式的换肤
其实可以从资源访问和资源XML解析的角度去处理
有兴趣可以私聊
改动涉及到AAPT PackageManger ZipIO Resource XMLParse
其实可以从资源访问和资源XML解析的角度去处理
有兴趣可以私聊
改动涉及到AAPT PackageManger ZipIO Resource XMLParse