首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓11 DisplayMetrics

安卓11 DisplayMetrics
EN

Stack Overflow用户
提问于 2021-09-12 10:42:47
回答 1查看 301关注 0票数 0

Android 11的另一个突破性变化。

代码语言:javascript
复制
 Caused by: java.lang.UnsupportedOperationException: Tried to obtain display from a Context not associated with  one. Only visual Contexts (such as Activity or one created with Context#createWindowContext) or ones created with Context#createDisplayContext are associated with displays. Other types of Contexts are typically related to background entities and may return an arbitrary display.

我有一个自定义的RecyclerView,这是错误发生时的流。

代码语言:javascript
复制
public AutoPlayVideoRecyclerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

private void initView(Context context) {
        heightScreen = getHeightScreen(context); ...


private int getHeightScreen(Context context) {
        return RealDisplayMetricsUtil.getDeviceRealHeight(context);
    }

public class RealDisplayMetricsUtil {

    public static int getDeviceRealHeight(Context context){
        DisplayMetrics displayMetrics = new DisplayMetrics();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
            context.getDisplay().getRealMetrics(displayMetrics);
        else {
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getRealMetrics(displayMetrics);
        }
        return displayMetrics.heightPixels;
    }

错误从此处开始

代码语言:javascript
复制
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
            context.getDisplay().getRealMetrics(displayMetrics);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-25 19:26:31

我不认为上面的代码有什么不同,因为这两个都在Android SDK 31中被弃用了,所以我只是完全删除了这个条件来解决这个问题。这不是最终的答案,但它应该在一段时间内有效。在这里自由添加新的解决方案,我将在审查和测试后将其标记为答案。

代码语言:javascript
复制
DisplayMetrics displayMetrics = new DisplayMetrics();

        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        windowManager.getDefaultDisplay().getRealMetrics(displayMetrics);
        return displayMetrics.heightPixels;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69150674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档