android偏门知识小节


1、dp转px,使用函数转换

Math.round(TypedValue.applyDimension(

                TypedValue.COMPLEX_UNIT_DIP, 10, getResources()

                        .getDisplayMetrics()));

2、系统导航栏:判读是否含有,获取高度

private boolean hasSystemNavigationBar() {


        if (Build.VERSION.SDK_INT < 11) {
            // 3.0加入的方法,3.0之前不处理
            return false;
        }


//        //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar
//        boolean hasMenuKey = ViewConfiguration.get(this)
//                .hasPermanentMenuKey();
//        boolean hasBackKey = KeyCharacterMap
//                .deviceHasKey(KeyEvent.KEYCODE_BACK);
//
//        if (!hasMenuKey && !hasBackKey) {
//            // 做任何你需要做的,这个设备有一个导航栏
//            return true;
//        }


        boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
        boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);


        if (hasBackKey && hasHomeKey) {
            // 有虚拟按键
            return true;
        } else {
            // 没有有虚拟按键:99%可能。
            return false;
        }


//        return false;
    }


    public int getSystemNavigationBarHeight() {


        Resources resources = this.getResources();
        int resourceId = resources.getIdentifier("navigation_bar_height",
                "dimen", "android");
        //获取NavigationBar的高度
        int height = resources.getDimensionPixelSize(resourceId);
        return height;
    }

3、监听软键盘:onSizeChanged方法应该也可用

parentLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) mNavigationLayout.getLayoutParams();


                if(bottom != 0 && oldBottom != 0 && bottom != oldBottom && layoutParams !=null){


                    if (height != 0 && bottom - oldBottom < 0 && oldBottom - bottom == height) {
                        // 如果有布局弹出,弹出高度,小于系统虚拟按键的高度,视为虚拟按键弹出,其他视为键盘
                        return;
                    }

                    if (bottom < oldBottom) {

4、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值