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 ...
随机推荐
- PHP中array_merge和array相加的区别分析
今天处理一个这样的问题:如何获取字符键名相同值不同的两个数组值集合,用array_merge和数组相加都不可行,让我认真比较了下PHP中array_merge和array相加的区别 首先来看看键名是s ...
- 【JAVA解析XML文件实现CRUD操作】
一.简介. 1.xml解析技术有两种:dom和sax 2.dom:Document Object Model,即文档对象模型,是W3C组织推荐的解析XML的一种方式. sax:Simple API f ...
- html5 svg
html5 svg <html > <body> <p>canvas 用js 绘画,是整幅画布,适合游戏 svg可放大,支持dom 操作,js事件 线性渐变.高斯模 ...
- [Tools] Eclipse XML 注释和撤销注释
eclipse中编辑java或C/C++文件时,注释的快捷键均为 "CTRL + / ",编辑xml文件时,该快捷键无效. eclipse XML 注释:CTRL + SHIFT ...
- 实现一种快速查找Richedit中可见区域内OLE对象的方法
Richedit是一个OLE容器,使用Richedit来显示IM聊天内容时,通常使用OLE对象来实现在Richedit中播放表情动画. 触发表情的绘制有两种途径: 1.来自Richedit的刷新消息. ...
- FAST特征点检测
Features From Accelerated Segment Test 1. FAST算法原理 博客中已经介绍了很多图像特征检测算子,我们可以用LoG或者DoG检测图像中的Blobs(斑点检测) ...
- codeforce ABBYY Cup 3.0 - Finals (online version) B2. Shave Beaver! 线段树
B2. Shave Beaver! The Smart Beaver has recently designed and built an innovative nanotechnologic a ...
- 湖南省第十二届大学生计算机程序设计竞赛 A 2016
1803: 2016 Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. In ...
- SurfaceView
我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded inside of ...
- scrollTo , scrollBy区别
View视图中scrollTo 与scrollBy这两个函数的区别 . 首先 ,我们必须明白在Android View视图是没有边界的,Canvas是没有边界的,只不过我们通过绘制特定的View时对 ...