Android 魅族等SmartBar适配

通过反射获取是否含有SmartBar:

 1 /**
 2      * 判断是否有SmartBar
 3      */
 4     private boolean hasSmartBar() {
 5         // SP存储是否显示SmartBar
 6         if (!SharedPresUtil.getBoolean("SmartBar_Type", true)) {
 7             return false;
 8         }
 9 
10         try {
11             // 新型号可用反射调用Build.hasSmartBar()
12             Method[] methods = Class.forName("android.os.Build").getMethods();
13             for (Method method : methods) {
14                 if (method.getName().equals("hasSmartBar")) {
15                     return ((Boolean) method.invoke(null)).booleanValue();
16                 }
17             }
18         } catch (Exception e) {
19             e.printStackTrace();
20         }
21         return false;
22     }

创建menu文件,作为渲染。

 1 @Override
 2     public boolean onCreateOptionsMenu(Menu menu) {
 3         if (hasSmartBar()) {
 4             MenuInflater inflater = getMenuInflater();
 5             inflater.inflate(R.menu.menu_more, menu);
 6             MenuItem menu_profile = menu.findItem(R.id.menu_profile);
 7             MenuItem menu_run = menu.findItem(R.id.menu_start);
 8             MenuItem menu_social = menu.findItem(R.id.menu_social);
 9             menu_profile.setIcon(R.drawable.icon_meizu_profile);
10             menu_social.setIcon(R.drawable.icon_meizu_social);
11             switch (mFragmentTabAdapter.getCurrentTab()) {
12                 case 1:
13                 case 3:
14                     break;
15                 case 2:
16                     menu_social.setIcon(R.drawable.icon_meizu_social_selected);
17                     break;
18                 case 0:
19                 default:
20                     menu_profile.setIcon(R.drawable.icon_meizu_profile_selected);
21             }
22             if (isStart()) {
23                 menu_run.setIcon(R.drawable.icon_meizu_end);
24             } else {
25                 menu_run.setIcon(R.drawable.icon_meizu_start);
26             }
27             return true;
28         } else {
29             return false;
30         }
31     }
32 
33     @Override
34     public boolean onOptionsItemSelected(MenuItem item) {
35         switch (item.getItemId()) {
36             case R.id.menu_profile:
37                 mFragmentTabAdapter.showTab(0);
38                 break;
39             case R.id.menu_start:
40                 onStartClick(); // 开始按钮
41                 break;
42             case R.id.menu_social:
43                 mFragmentTabAdapter.showTab(2);
44                 break;
45             case R.id.menu_rank:
46                 mFragmentTabAdapter.showTab(1);
47                 break;
48 
49             case R.id.menu_more:
50                 mFragmentTabAdapter.showTab(3);
51                 break;
52             default:
53                 break;
54         }
55         invalidateOptionsMenu(); // 刷新
56         return super.onOptionsItemSelected(item);
57     }

最后,隐藏app常规的底部菜单栏。

1 if (hasSmartBar()) {
2      dismissTabHost();//判断是否有SmartBar的手机隐藏底部菜单栏
3 }

 

posted @ 2015-11-24 12:11  晕菜一员  阅读(956)  评论(0编辑  收藏  举报