0

Why the following public field of the class android.util.DisplayMetrics:

public float noncompatDensity;

is visible in the debugger:

Android studio debugger

but not available in code?

Android studio code

I'm using Android Studio Bumblebee | 2021.1.1 Patch 3

Simone
  • 1,418
  • 15
  • 22

1 Answers1

2

if you look in the source you can see this:

/**
 * The reported scaled density prior to any compatibility mode scaling
 * being applied.
 * @hide
 */
public float noncompatScaledDensity;

It's annotated with @hide which means the field is not technically part of the SDK. Google uses the @hide annotation to strip out the classes and methods they don't want to be part of the public SDK. That's why your IDE cannot compile your code against them -- they literally don't exist. However, the android framework jar on an actual device DOES contain these classes and methods, which is why they can be accessed at runtime using reflection.

Ivo
  • 18,659
  • 2
  • 23
  • 35