自定义一个theme在不同的sdk环境下继承不同的值
程序员文章站
2023-12-02 20:14:58
先说一下自己的一点小心得: 可能很多在高版本下编绎apk的同学,可能都曾有和我一样的困惑,就是如何让低版本的用户也能有高版本的体验呢,比如3.0才能用的holo style...
先说一下自己的一点小心得:
可能很多在高版本下编绎apk的同学,可能都曾有和我一样的困惑,就是如何让低版本的用户也能有高版本的体验呢,比如3.0才能用的holo style.
于是很多人为此求助了很多开源的sdk,比如holo everywhere,sherlockactionbar等等,但是这些库都很庞大,而且通常添加进去以后,在低版本的机子上也会严重影响到应用运行的速度。所以我们为何不想想,我们的出发点是否也是用户的需求呢?对于这个问题,我女友给了一个否定的答案,她用的是android 2.1她说,她已经习惯2.1那个对话框了,她觉得android对话框本来就是这样,4.0的一点也不好看,所以可能对于很多2.1~2.3的用户,holo并不是他们需要和追求的必备品。只要用他们熟悉的控件就好没必要在自己的软件中强制的让他们体验4.0的风格,否则可能物极必反。而且花心思去自定义原生的alertdialog,真的不如花时间改进其他性能。
所以我觉得正确的做法应该是:不去追求自己应用在所有的sdk中表现完全一致,而是从用户的角度,使用他们熟悉的风格。于是才引出了题目中的方法:
技术的部分就相当简单了:
1.更改sdk至3.0及以上
2.在res的values-v11和values里分别新建一个styles.xml
3.values-v11下添加 <style name="apptheme" parent="android:theme.holo.light">
4.values下添加 <style name="apptheme" parent="@android:style/theme.light">
5.manifest.xml下的application下添加 android:theme="@style/theme.greendroid.light" >
其实就是自定义一个theme在不同的sdk环境下继承不同的值。
可能很多在高版本下编绎apk的同学,可能都曾有和我一样的困惑,就是如何让低版本的用户也能有高版本的体验呢,比如3.0才能用的holo style.
于是很多人为此求助了很多开源的sdk,比如holo everywhere,sherlockactionbar等等,但是这些库都很庞大,而且通常添加进去以后,在低版本的机子上也会严重影响到应用运行的速度。所以我们为何不想想,我们的出发点是否也是用户的需求呢?对于这个问题,我女友给了一个否定的答案,她用的是android 2.1她说,她已经习惯2.1那个对话框了,她觉得android对话框本来就是这样,4.0的一点也不好看,所以可能对于很多2.1~2.3的用户,holo并不是他们需要和追求的必备品。只要用他们熟悉的控件就好没必要在自己的软件中强制的让他们体验4.0的风格,否则可能物极必反。而且花心思去自定义原生的alertdialog,真的不如花时间改进其他性能。
所以我觉得正确的做法应该是:不去追求自己应用在所有的sdk中表现完全一致,而是从用户的角度,使用他们熟悉的风格。于是才引出了题目中的方法:
技术的部分就相当简单了:
1.更改sdk至3.0及以上
2.在res的values-v11和values里分别新建一个styles.xml
3.values-v11下添加 <style name="apptheme" parent="android:theme.holo.light">
4.values下添加 <style name="apptheme" parent="@android:style/theme.light">
5.manifest.xml下的application下添加 android:theme="@style/theme.greendroid.light" >
其实就是自定义一个theme在不同的sdk环境下继承不同的值。