Android 魅族等SmartBar适配

时间:2023-03-10 05:40:16
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的手机隐藏底部菜单栏
}