zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    log4net
    winform datagridview 刷新数据不需要重新绑定
    Git 简明教程(一)
    Task详解【转载】
    虚拟机Linux系统手动指定IP
    DataGrip连接sqlserver,提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
    c#中Equals方法和GetHashCode
    获取程序集的类型信息
    第一个windows桌面应用程序
    在运行时让PropertyGrid动态显示我们想要的对象属性
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/4991193.html
Copyright © 2011-2022 走看看