Android Studio 获取屏幕宽度跟高度

本文提供两个实用函数,用于在Android开发中轻松获取设备屏幕的宽度和高度。通过这些函数,开发者可以灵活地设置控件的相对宽度和高度,实现自适应布局。例如,设置控件占据屏幕1/4大小的方法也一并给出。

两个函数直接反馈当前手机的宽度跟高度

    // 获得屏幕的宽度
    public static int getScreenWidth(Context ctx) {
        // 从系统服务中获取窗口管理器
        WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        // 从默认显示器中获取显示参数保存到dm对象中
        wm.getDefaultDisplay().getMetrics(dm);
        return dm.widthPixels; // 返回屏幕的宽度数值
    }

    // 获得屏幕的高度
    public static int getScreenHeight(Context ctx) {
        // 从系统服务中获取窗口管理器
        WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        // 从默认显示器中获取显示参数保存到dm对象中
        wm.getDefaultDisplay().getMetrics(dm);
        return dm.heightPixels; // 返回屏幕的高度数值
    }

在android开发过程中,对于控件的高度,宽度,通过上面的函数调用,轻松实现编程中设置控件的相对宽度跟高度:

以下为一个设置占据屏幕4分之1大小的控件的方式:
 

xxx.getLayoutParams().width = getScreenWidth(this)/2;
xxx.getLayoutParams().height = getScreenHeight(this)/2;

 

Android 开发中,如果你想获取 **当前连接设备的屏幕宽度(以 dp 为单位)**,可以通过 `DisplayMetrics` 和 `Resources` 获取设备的屏幕信息,并将其转换为与密度无关的 `dp` 值。 --- ## ✅ 获取设备宽度(dp)的完整代码(Kotlin): ```kotlin fun getDeviceWidthInDp(context: Context): Int { val displayMetrics = context.resources.displayMetrics val widthPixels = displayMetrics.widthPixels val density = displayMetrics.density return (widthPixels / density).toInt() } ``` ### ✅ 使用方式(在 Activity 中调用): ```kotlin class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val widthDp = getDeviceWidthInDp(this) Log.d("ScreenInfo", "Device width in dp: $widthDp") } fun getDeviceWidthInDp(context: Context): Int { val displayMetrics = context.resources.displayMetrics val widthPixels = displayMetrics.widthPixels val density = displayMetrics.density return (widthPixels / density).toInt() } } ``` --- ## ✅ 获取设备宽度(px)和高度(px)的方法: ```kotlin fun getDeviceWidthInPx(context: Context): Int { val displayMetrics = context.resources.displayMetrics return displayMetrics.widthPixels } ``` --- ## ✅ 获取设备的 `smallestScreenWidthDp`(用于判断匹配哪个 `values-swXXXdp`) ```kotlin val smallestWidthDp = resources.configuration.smallestScreenWidthDp Log.d("ScreenInfo", "Smallest screen width in dp: $smallestWidthDp") ``` 这个值用于判断系统会加载哪个 `values-swXXXdp` 文件夹中的资源。 --- ## ✅ 获取设备的完整屏幕信息(宽、高、密度、dpi) ```kotlin fun printScreenInfo(context: Context) { val metrics = context.resources.displayMetrics val config = context.resources.configuration Log.d("ScreenInfo", "Width in px: ${metrics.widthPixels}") Log.d("ScreenInfo", "Height in px: ${metrics.heightPixels}") Log.d("ScreenInfo", "Density: ${metrics.density}") Log.d("ScreenInfo", "ScaledDensity: ${metrics.scaledDensity}") Log.d("ScreenInfo", "Width in dp: ${metrics.widthPixels / metrics.density}") Log.d("ScreenInfo", "Height in dp: ${metrics.heightPixels / metrics.density}") Log.d("ScreenInfo", "SmallestScreenWidthDp: ${config.smallestScreenWidthDp}") Log.d("ScreenInfo", "ScreenLayout: ${config.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK}") } ``` --- ## ✅ 获取设备方向(横屏/竖屏) ```kotlin val orientation = resources.configuration.orientation if (orientation == Configuration.ORIENTATION_LANDSCAPE) { Log.d("ScreenInfo", "Current orientation: Landscape") } else { Log.d("ScreenInfo", "Current orientation: Portrait") } ``` --- ## ✅ 注意事项 - `dp = px / density` - `density` 值通常为 `1.0`(mdpi)、`1.5`(hdpi)、`2.0`(xhdpi)、`3.0`(xxhdpi)、`4.0`(xxxhdpi) - `smallestScreenWidthDp` 是系统选择 `values-swXXXdp` 文件夹的关键值 --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值