在Android应用程序中,你可以使用DisplayMetrics
类来动态获取屏幕的分辨率和像素密度。以下是如何获取这些信息的示例代码:
java
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.WindowManager;
public class ScreenUtility {
private int screenWidth;
private int screenHeight;
private float screenDensity;
public ScreenUtility(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
if (windowManager != null) {
windowManager.getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
screenDensity = metrics.density;
}
}
public int getScreenWidth() {
return screenWidth;
}
public int getScreenHeight() {
return screenHeight;
}
public float getScreenDensity() {
return screenDensity;
}
}
在上述类中,我们首先获得了WindowManager
服务,然后创建一个DisplayMetrics
对象以存储屏幕参数。我们调用windowManager.getDefaultDisplay().getMetrics(metrics);
来填充DisplayMetrics
对象,然后我们可以从DisplayMetrics
对象中获取屏幕宽度(widthPixels
)、屏幕高度(heightPixels
)和屏幕密度(density
)。
屏幕密度density
是一个浮点数,表示每英寸的像素点数(dpi)除以160(基准密度)。例如,density
值为2.0意味着屏幕的密度是320dpi(即2.0 * 160dpi)。
请注意,上述代码是一个简单的示例,你可以根据自己的应用程序需求对其进行扩展或修改。例如,你可能还想检索更多的显示指标,如缩放密度(scaledDensity
),这对于计算文字大小等非常有用。
为了在活动(Activity
)或片段(Fragment
)中使用这个类,你可以这样做:
java
ScreenUtility screenUtility = new ScreenUtility(this);
int width = screenUtility.getScreenWidth();
int height = screenUtility.getScreenHeight();
float density = screenUtility.getScreenDensity();
// 打印或使用获取到的屏幕参数
Log.d("Screen Info", "Width: " + width + "px, Height: " + height + "px, Density: " + density + "dpi");
在this
中传递上下文(Context
),并通过相应的getter方法来获取屏幕参数。如果是在片段中,你可以使用getActivity()
来获取与片段关联的活动的上下文。