美文网首页
快速完成Android全面屏适配

快速完成Android全面屏适配

作者: libilang | 来源:发表于2017-09-28 13:05 被阅读2184次

    最近发布的手机里面最火的就是全面屏了,这就涉及到了我们项目适配全面屏手机的问题。本篇文章就是记录一下刚花一点时间做完的Android全面屏适配的一些东西。先看一下没有适配的时候在小米MIX2上的实际效果

    20170804_122245.jpg
      1.大家看下目前市面上目前发布的全面屏手机
      机型                                   屏幕纵横比    
      小米MIX                         17:9
      小米MIX2                            18:9
      LG G6                         18:9    
      Samsung Galaxy S8          18.5:9 
      Essential Phone            19:10  
      vivo  X20                             18:9
      meizu MX7                          暂时未知
      金立                                     暂时未知
      努比亚                                 暂时未知
    
      目前我手里用的测试机是同事的小米MIX2比例是18/9,所以项目跑起来后上下留有黑边,官方给的建议是设置max_aspect比例是2.1,目前的比例都是在这范围之内,所以在Androidmanifest清单文件里面添加
    
    <meta-data
                android:name="android.max_aspect"
                android:value="2.1" />
    
      跑起来项目明显的上下黑边都没有了,但是出来别的问题,就是我们的popwindow从底部弹出的位置会出现间隙,之前有判断是否有底部虚拟按键,在手势操作收索的时候,出入点高度变化就会出现间隙。所以pop的高度就少了底部虚拟按键的高度,所以设置pop的高度需要加上底部的高度。
    
    Rect frame = new Rect();
            mContext.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
            statusBarHeight = frame.top;
            DisplayMetrics metrics = new DisplayMetrics();
            mContext.getWindowManager().getDefaultDisplay()
                    .getMetrics(metrics);
            mWidth = metrics.widthPixels;
            if (ConstantS.ISMAXScreenRatio) {//全面屏
                statusBarHeight = 0;
                mHeight = metrics.heightPixels + ViewUtil.getBottomStatusHeightNew(context);
            } else {//普通屏幕
                mHeight = metrics.heightPixels;
            }
            setWidth(mWidth);
            setHeight(mHeight);
    
      在设置Location的位置的时候,全面屏的位置设置为0。当然这个是我项目里面的东西,大家可以看情况而定。
    
    showAtLocation(view, Gravity.BOTTOM, 0, statusBarHeight);
    

    statusBarHeight的高度就是模拟键盘的高度。
    然后跑起来看下效果吧

    ![Uploading 20170804_122545_892356.jpg . . .] 20170804_122545.jpg
    一般来说项目里面弹出的popwindow的出入位置都会写成公共的方法,所以尽可能写成一个方法体这样修改起来方便很多。好了就记录到这里了。感谢大家的阅读。。

    相关文章

      网友评论

          本文标题:快速完成Android全面屏适配

          本文链接:https://www.haomeiwen.com/subject/kyayextx.html