浅谈NavigationBar高度的获取

由于MEIZU手机的特殊性,对于NavigationBar的获取有特殊的讲究,有三个方面的因素:

1)MEIZU早期的系统(flyme os 5以下)存在smartbar,且可以设置智能隐藏;flyme os 5及以后smartbar被废弃,而使用android的NavigationBar

2)flymeos 5以下的系统有些存在系统dimen资源用于获取smartbar高度,有些则不再存在

3)是否智能隐藏SmartBar的开关并不与Android是否显示NavigationBar的开关为同一个

所以我今天研究了下,封装了一个方法:

public static int getNavigationBarHeight(Context context) {
    final boolean isMeiZu = Build.MANUFACTURER.equals("Meizu");

    final boolean autoHideSmartBar = Settings.System.getInt(context.getContentResolver(),
            "mz_smartbar_auto_hide", 0) == 1;

    if (isMeiZu) {
        if (autoHideSmartBar) {
            return 0;
        } else {
            try {
                Class c = Class.forName("com.android.internal.R$dimen");
                Object obj = c.newInstance();
                Field field = c.getField("mz_action_button_min_height");
                int height = Integer.parseInt(field.get(obj).toString());
                return context.getResources().getDimensionPixelSize(height);
            } catch (Throwable e) { // 不自动隐藏smartbar同时又没有smartbar高度字段供访问,取系统navigationbar的高度
                return getNormalNavigationBarHeight(context);
            }
        }
    } else {
        return getNormalNavigationBarHeight(context);
    }
}

protected static int getNormalNavigationBarHeight(final Context ctx) {
    try {
        final Resources res = ctx.getResources();
        int rid = res.getIdentifier("config_showNavigationBar", "bool", "android");
        if (rid > 0) {
            boolean flag = res.getBoolean(rid);
            if (flag) {
                int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android");
                if (resourceId > 0) {
                    return res.getDimensionPixelSize(resourceId);
                }
            }
        }
    } catch (Throwable e) {
        LogCatLog.d("FBTools", "getNormalNavigationBarHeight() exception:" + e.getMessage());
    }
    return 0;
}
时间: 2024-09-12 01:16:25

浅谈NavigationBar高度的获取的相关文章

浅谈新站快速获取排名的五种方法

一个网站要想获得来自搜索引挚的流量,那么这个站自然就要有排名.而这个关键词的排名也要相当的靠前,因为超过五页后的关键词排名根本就没流量的.而对于一个新站来说,要想获得排名,除非是做别人没有做的,而且有搜索引量的词,但是这样的词就像大海捞针一样的难找,可以做的都有站长做着了.要想有流量就要超越他们了.对于新站来说,超越还是一个梦想,首页要做好自己的站,使得自己的网站不输在起跑线上才行啊.那么对于一个新站来说,排名主要靠哪些方法呢? 一.原创的内容 新站一没权重.二没知名度.三没流量.更不用说排名了

浅谈中小团购网站获取流量的方式

中介交易 SEO诊断 淘宝客 云主机 技术大厅 笔者经营的是一个地方性小型团购网站,不论资金还是人才都无法和一线团购网站相比,面对激烈的市场竞争,中小团购网站该如何生存呢?笔者通过一年多的实战经营,加上近段时间研究网赚的心得,说说中小团购网站的流量哪里来? 团购网站经营面临的最大问题就是网站流量,一线团购网站的流量来源主要是网络广告(包括硬广.cpa.cpm.cps等),地面广告(包括公交地铁.户外大屏.楼宇等),媒体广告(广播电视.报刊杂志等),地面广告和媒体广告投入资金巨大且投入回报不好统计

浅谈通过抢注域名获取好域名的小技巧

随着参与域名投资的人越来越多,通过传统方式注册到好域名的概率已经微乎其微了.一种新的注册方式慢慢被域名投资者所接受,那就是http://www.aliyun.com/zixun/aggregation/37863.html">域名抢注.由于一些不可控因素导致每天都会有大量的域名被删除,这其中包括:建站失败.无钱续费等等.这些被删除域名很多都是域名所有人精挑细选出来的,域名质量十分被看好.域名一旦被删除,立马就会被人通过域名抢注平台抢注. 那么他们是怎样发现并抢注这类域名的呢?这样从域名删除

浅谈ASP中Request对象获取客户端数据的顺序

request|对象|客户端|数据 浅谈ASP中Request对象获取客户端数据的顺序 /**描述:在使用ASP Request对象时需要注意的小问题作者:慈勤强Email : cqq1978@yeah.net**/ 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写?strMessage = Request("msg")strMessage = Request.Form(&qu

浅谈A5投稿的写作思路和灵感获取来源(续集)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在上周天的时候,笔者完成了两篇文章,浅谈A5投稿的写作思路和灵感获取来源(上集)和浅谈A5投稿的写作思路和灵感获取来源(下集)今天再次仔细看了一下这两篇文章,始终觉得还是少了一点什么,这篇文章作为续集,就补充一下,以上两篇文章的观点,希望可以更加完善自己的观点,从而总结出一份完整的方面,让写作的方式和灵感来源更加的绽放开来. 第七点:针对程序

浅谈A5投稿的写作思路和灵感获取来源(下集)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 这篇文章呢,接上集而来,在浅谈A5投稿的写作思路和灵感获取来源(上集)中,笔者提到了可以用互联网事件,生活中的事件,B2C网站的结构这方面找一些灵感和来源,那么除了这三点还有其他方式,还有其他更多的方式让我们了解,那么请听笔者说完吧. 第四点:新闻评论性写作 以上三篇文章分别就是A5的投稿性文章,笔者一次性找出来,方便证实本身这就是一种投稿的

浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法_jquery

1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQuery(),即$(this)=jquery();也就是说,这样可以返回一个jquery对象.那么,当你在网页中alert($('#id'));时,会弹出一个[object Object ],这个object对象,也就是jquery对象了. 那么,我们

浅谈Java自定义注解和运行时靠反射获取注解_java

java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能. 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.lang.annotation 包中. 1.元注解 元注解是指注解的注解.包括  @Retention @Target @Document @Inherited四种. 1.1.@Retention: 定义注解的保留策略 @Retention(RetentionPolicy.SOURCE) //注解仅

浅谈android获取设备唯一标识完美解决方案

本文介绍了浅谈android获取设备唯一标识完美解决方案,分享给大家,具体如下: /** * deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符 * * 渠道标志为: * 1,andriod(a) * * 识别符来源标志: * 1, wifi mac地址(wifi): * 2, IMEI(imei): * 3, 序列号(sn): * 4, id:随机码.若前面的都取不到时,则随机生成一个随机码,需要缓存. * * @param context * @return */ p