Android 魅族等SmartBar适配
通过反射获取是否含有SmartBar:
/**
* 判断是否有SmartBar
*/
private boolean hasSmartBar() {
// SP存储是否显示SmartBar
if (!SharedPresUtil.getBoolean("SmartBar_Type", true)) {
return false;
} try {
// 新型号可用反射调用Build.hasSmartBar()
Method[] methods = Class.forName("android.os.Build").getMethods();
for (Method method : methods) {
if (method.getName().equals("hasSmartBar")) {
return ((Boolean) method.invoke(null)).booleanValue();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
创建menu文件,作为渲染。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (hasSmartBar()) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_more, menu);
MenuItem menu_profile = menu.findItem(R.id.menu_profile);
MenuItem menu_run = menu.findItem(R.id.menu_start);
MenuItem menu_social = menu.findItem(R.id.menu_social);
menu_profile.setIcon(R.drawable.icon_meizu_profile);
menu_social.setIcon(R.drawable.icon_meizu_social);
switch (mFragmentTabAdapter.getCurrentTab()) {
case 1:
case 3:
break;
case 2:
menu_social.setIcon(R.drawable.icon_meizu_social_selected);
break;
case 0:
default:
menu_profile.setIcon(R.drawable.icon_meizu_profile_selected);
}
if (isStart()) {
menu_run.setIcon(R.drawable.icon_meizu_end);
} else {
menu_run.setIcon(R.drawable.icon_meizu_start);
}
return true;
} else {
return false;
}
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_profile:
mFragmentTabAdapter.showTab(0);
break;
case R.id.menu_start:
onStartClick(); // 开始按钮
break;
case R.id.menu_social:
mFragmentTabAdapter.showTab(2);
break;
case R.id.menu_rank:
mFragmentTabAdapter.showTab(1);
break; case R.id.menu_more:
mFragmentTabAdapter.showTab(3);
break;
default:
break;
}
invalidateOptionsMenu(); // 刷新
return super.onOptionsItemSelected(item);
}
最后,隐藏app常规的底部菜单栏。
if (hasSmartBar()) {
dismissTabHost();//判断是否有SmartBar的手机隐藏底部菜单栏
}
Android 魅族等SmartBar适配的更多相关文章
- Android屏幕相关概念和适配方法
参考文档: 1.http://blog.csdn.net/carson_ho/article/details/51234308(略有修改) 2.http://www.cnblogs.com/cheng ...
- Android通知栏介绍与适配总结(上篇)
此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...
- Android通知栏介绍与适配总结
由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知栏玩法,谷歌也不得不对其进行更新迭代调整,增加新功能的同时,也在不断地改变样式,试图迎合更 ...
- Android - 多语言自动适配
Android为多语言适配提供了很大的方便.开发者不需要在代码中进行修改.只需要配置xml文件. res --> values 其中存放有xml文件.一般这些都是英文的字符串.我们可以存放其他语 ...
- Android P的APP适配总结,让你快人一步
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由QQ音乐技术团队发表于云+社区专栏 上篇:Android P 行为变更适配 Android P 这次有很多行为变更,其中不乏一些需要亟 ...
- Android Camera多屏幕适配解决预览照片拉伸
通常,拍照预览页面的照片拉伸主要与下面两个因素有关: 1. Surfaceview的大小 2. Camera中的Preview的大小 如下图: 图中preview显示的是手机支 ...
- 美团Android自动化之旅—适配渠道包
http://tech.meituan.com/mt-apk-adaptation.html 概述 前一篇文章(美团Android自动化之旅-生成渠道包)介绍了Android中几种生成渠道包的方式,基 ...
- Android APP 多端适配
Android APP 多端适配 传统的多终端适配方案,是为大尺寸 Pad开发一个特定的 HD版本. 但是目前支持 Android 系统的设备类型越来越丰富,不同类型的设备尺寸也越来越多样化,特定的H ...
- android smartbar适配
1.使用魅族的demo里的SmartBarUtils.java 2.在mainifest中的Application android:theme="@android:style ...
随机推荐
- JavaScript基础——使用运算符
JavaScript运算符允许你改变一个变量的值.你已经熟悉了用于赋值给变量的=运算符.JavaScript提供了几种不同的运算符,它们可以划分为两大类:算数运算符和赋值运算符. 1.算数运算符 你可 ...
- JS中级 - 01:DOM节点
1元素属性 1.1childNodes 返回元素的一个子节点的数组 (不推荐,建议用非标准children代替) 提醒:只包含一级子节点,不包含后辈孙级别以下节点. children:返回元素的一 ...
- 数据结构和算法 – 7.散列和 Hashtable 类
7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...
- MangoDB的C#Driver驱动简单例子
以下是本人学习C#Driver驱动简单的学习例子.GridFS的增删查操作 和 表的增删查改操作. public class MongoServerHelper { public static str ...
- 【JAVA 文件概述】
一.概述 使用此类的原因: 该类将文件或者文件夹封装成对象.方便对文件与文件夹的属性信息进行操作.File对象作为参数传递给流的构造函数.要求:使用File类的常用方法. windows平台下,目录分 ...
- js特效
1.轮播换图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- html5 离线存储 worker
html5 离线存储 <!DOCTYPE html> <html manifest="cache.manifest"> <!--manifest存储- ...
- C#屏幕截图
今天通过C#来实现一个简单的屏幕截图功能.实现思路,获取鼠标按下去的位置和鼠标左键释放的位置,计算这个区域的宽度和高度.然后通过 Graphics.CopyFromScreen 方法便可以获取到屏幕截 ...
- Java Security: Illegal key size or default parameters?
来自:http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters I ...
- 修改Apache配置文件开启gzip压缩传输
转自:http://down.chinaz.com/server/201202/1645_1.htm 最近无事研究一些Web的优化,用工具page speed检测网站时发现还没有开启gzip压缩,于是 ...