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 ...
随机推荐
- Android View -- setTranslationX
通过此方法使View位置发生偏移,达到margin的作用却又不改变View的getLeft()的值. 恢复方法是setTranslationX(0),而不是上一次偏移量的相反数. 不过,通过getLo ...
- Delphi基础语法的学习笔记和注意事项总结
以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考 ...
- Pyqt 打开外部链接的几种方法
Pyqt 触发一个事件,打开外部链接,我找到了这个方法,供大家参考 1. QDesktopServices 的openUrl 方法 QtGui.QDesktopServices.openUrl(QtC ...
- EChart使用简单介绍
Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,使用内容做简单记录:(EChart下载地址 http://echarts.baidu.com/download.html) 1.ti ...
- 使用RMAN DUPLICATE...FROM ACTIVE DATABASE创建物理standby database
Applies to: Oracle Server - Enterprise Edition - Version 11.1.0.6 to 11.2.0.4 [Release 11.1 to 11.2] ...
- Linux 端口-> PID -> 启动目录
1. lsof -i :8443 找到PID 比如说是5413 2. ps aux | grep 5413 可以得到一些信息 3. 除了第二步的方式,更直观的是 cd /pro ...
- javascript中的true和false
今天遇到一个问题,执行下面的代码返回true还是false?请说明理由 console.log([] == ![]) 在浏览器中运行了一下,发现结果是true.为什么会这样呢?于是查找了相关的资料. ...
- python web编程 创建一个web服务器
这里就介绍几个底层的用于创建web服务器的模块,其中最为主要的就是BaseHTTPServer,很多框架和web服务器就是在他们的基础上创建的 基础知识 要建立一个Web 服务,一个基本的服务器和一个 ...
- NSFileManager 的基本使用方法
本方法已有个人总结, int main(int argc, const char * argv[]) { @autoreleasepool { NSString *path=@"/Users ...
- 非正规写法获取不到tr,td
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...