现在,还有大部分安卓开发者在开发安卓APP时使用的是2.x的SDK版本,为了兼容2.x的手机这本倒无可厚非,但最令人头痛的就是2.x版本的主题是在太丑了,这是安卓刚推出时只考虑到了实用,并没考虑到美观,而现在上至操作系统下至应用软件都以漂亮的界面,舒适的操作体验为前提,那么是否可以,既兼容2.x又可以使用4.x的主题风格呢?答案当然是有的!

有时我们在安装某APP时,会看到支持最低版本为2.1,2.2等,但是打开该应用其主体风格确实4.x的,我们可能会这样想,既然能支持2.1,2.2那它使用的SDK版本应该为2.x,但为什么主题风格确实4.x的呢?道理很简单,既然是4.x的主题风格,那肯定是用4.x的SDK版本编译的,为了实现这种效果,可以在代码中动态的判断当前系统的版本,如果在11以下就使用2.x的主题风格,如果在11以上就是用4.x的主题风格,可以创建一个BaseActivity,判断代码放入其中,其他Activity全部继承BaseActivity即可,主要代码如下:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
            setTheme(android.R.style.Theme_Black_NoTitleBar);
        }else{
            setTheme(android.R.style.Theme_Holo_Light);
        }
		requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏

该段代码放置在onCreate方法中,super.onCreate(savedInstanceState);之前,并在AndroidManifest.xml文件中声明最低支持版本,一般为7,或者8就可以了:

<uses-sdk android:minSdkVersion="7" />

最后一点,有些同学在用此方法后,打开APP的一瞬间会看先看到一个带标题栏黑色的界面一闪而过,这样大家可以先在AndroidManifest.xml中定义一个默认主题即可:

android:theme="@android:style/Theme.Black.NoTitleBar" 

此后,我们就可以不必再使用2.x的SDK去编译项目了。

还有一点需要注意,就是如果项目使用了TabActivity,需要在你的TabMainActivity中用同样的方法去判断。

安卓2.x的版本使用4.x的主题的更多相关文章

  1. adb查看安卓设备系统Android版本

    adb shell getprop "ro.build.version" 结果中如下两项便是版本信息: [ro.build.version.release]: [4.4.4][ro ...

  2. 安卓 API 19 低版本设置自带的圆圈效果

    在 Android API 19 环境下,RadioButton 消除或者自定义自带的圆圈效果的形式来设置: 自定义自身选择图标 android:button="@drawable/sele ...

  3. 在安卓3.0以下版本使用Fragment的注意事项

    1. 按照网上的Fragment官网资料翻译来做一直有错: 10-03 02:43:13.971: E/AndroidRuntime(1921): java.lang.RuntimeException ...

  4. 移动端测试===安卓设备共享程序-发布版本“share device”

    分享一个开源的项目 share device 项目地址:https://github.com/sunshine4me/ShareDevicePublish/tree/win7-x64 首先选择对应系统 ...

  5. 安卓4.3以上版本已经完美支持BLE(英文版)

    Android 4.3 (API Level 18) introduces built-in platform support for Bluetooth Low Energy in the cent ...

  6. 使用axios对安卓或者ios低版本兼容性处理

    原因:不支持ES6,无法使用promise 解决办法: 1.安装 es6-promise cnpm install es6-promise --save-dev 2.引入 es6-promise im ...

  7. adb获得安卓系统版本及截屏

    [时间:2017-09] [状态:Open] [关键词:adb, android,系统版本,截屏,screencap] 本文主要是我遇到的android命令行用法的一个简单总结 系统版本 获取系统版本 ...

  8. 当在安卓低版本呈现的界面(H5)出现问题的时候,我们怎么解决?

    昨天,在医院现场的客服人员,向我们反馈一个问题:说一位用户用他的安卓手机打开我们的app之后,界面是乱掉的:如下图: 向客服询问了具体的设备信息:安卓系统版本号是4.2 下意识觉得是因为css的兼容问 ...

  9. 安卓记账本开发学习day5之版本兼容问题

    安卓5.0以上版本想要隐藏DatePicker头布局的写法比较复杂,需要一层一层隐藏 int headerId = getContext().getResources().getIdentifier( ...

随机推荐

  1. Struts2--标签tag

    在Struts2框架中提供了一套标签库,可以与struts2无缝结合. 数据标签a.action.bean.date.debug.i18n.include.param.property.push.se ...

  2. [WC2006]水管局长数据加强版

    Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一 ...

  3. [HAOI2012]道路

    题目描述 C国有n座城市,城市之间通过m条[b]单向[/b]道路连接.一条路径被称为最短路,当且仅当不存在从 它的起点到终点的另外一条路径总长度比它小.两条最短路不同,当且仅当它们包含的道路序列不同. ...

  4. ●洛谷P1903 [国家集训队]数颜色

    题链: https://www.luogu.org/problemnew/show/P1903题解: 序列带修莫队, 推荐博客https://www.cnblogs.com/Paul-Guderian ...

  5. [Helvetic Coding Contest 2017 online mirror]

    来自FallDream的博客,未经允许,请勿转载,谢谢, 第一次在cf上打acm...和同校大佬组队打 总共15题,比较鬼畜,最后勉强过了10题. AB一样的题目,不同数据范围,一起讲吧 你有一个背包 ...

  6. FJOI2017 RP++

    嗯如果算得没错大概十二小时之后就是省选二试了 这次考试貌似就在我们学校 虽然机子挺旧的基本没用过 平时训练都是在专门的机房 其实貌似压力不是很大  因为一试跪了TAT  那时候还是图样 T3按照惯例是 ...

  7. make cmake gcc 间的关系

    看了一些关于make  cmake gcc间关系的帖子,其中这一篇简单明了. 作者:辉常哥链接:https://www.zhihu.com/question/36609459/answer/89743 ...

  8. java集合之ArrayList源码解读

    源自:jdk1.8.0_121 ArrayList继承自AbstractList,实现了List.RandomAccess.Cloneable.Serializable. ArrayList内部是通过 ...

  9. jquery form提交

    $('#form').form("submit", { url: "Stu_sendsms.aspx", onSubmit: function () { $(' ...

  10. jquery easyui combobox 从指定位置开始模糊查询

    $("#bzr").combobox({ url: "ClassSave.aspx?opt=bzr&bzr=<%=arrbj[2]%>", ...