美文网首页
WindowManager.getDefaultDisplay过

WindowManager.getDefaultDisplay过

作者: android_zyq | 来源:发表于2022-01-17 22:32 被阅读0次

    问题

    之前获取屏幕密度、获取屏幕宽高都离不开WindowManager.getDefaultDisplay方法,现在升级targetsdk后该方法被弃用了(sdk=30)

    WindowManager wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
    wm.getDefaultDisplay();
    

    方案

    官方给的替换方案是context.getDisplay(),但是此方法只在30之后的api才有,所以还要做下版本兼容。

    /**
         * 兼容API获取屏幕信息
         * @param context
         * @return
         */
        public static Display getDisplay(Context context){
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){
                return getDisplayApiR(context);
            }else {
                return getDisplayApiL(context);
            }
        }
    
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        private static Display getDisplayApiL(Context context){
            WindowManager wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
            return wm.getDefaultDisplay();
        }
        @RequiresApi(api = Build.VERSION_CODES.R)
        private static Display getDisplayApiR(Context context){
            return context.getDisplay();
        }
    
    

    升级targetsdk后会遇到很多过时方法,现在记录一下处理这些过时方法的替换方案和版本兼容方案,最后整理成一个专题。

    相关文章

      网友评论

          本文标题:WindowManager.getDefaultDisplay过

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