Android 屏幕分辨率工具类使用

编程入门 行业动态 更新时间:2024-10-18 12:35:08

Android <a href=https://www.elefans.com/category/jswz/34/1673408.html style=屏幕分辨率工具类使用"/>

Android 屏幕分辨率工具类使用

Android开发中我们经常需要用到将dip、px相互换算、获取手机屏幕的宽度、高度以及状态栏高度等,如下是基于屏幕这一块整理的一个类。

package com.per.loadingwebviewdome;import android.content.Context;
import android.util.DisplayMetrics;import java.lang.reflect.Field;/*** @author: xiaolijuan* @description: 屏幕分辨率工具类* @date: 2016-06-05* @time: 22:55*/
public class ScreenUtil {/*** 根据手机分辨率将dp转为px单位*/public static int dip2px(Context mContext, float dpValue) {final float scale = mContext.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}/*** 根据手机的分辨率从 px(像素) 的单位 转成为 dp*/public static int px2dip(Context mContext, float pxValue) {final float scale = mContext.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}/*** 屏幕宽高** @param mContext 上下文* @return*/private static int[] getScreenSize(Context mContext) {DisplayMetrics dm = mContext.getResources().getDisplayMetrics();int screenWidth = dm.widthPixels;int screenHeight = dm.heightPixels;return new int[]{screenWidth, screenHeight};}/*** 获取状态栏高度** @param mContext 上下文* @return*/public static int getStatusBarHeight(Context mContext) {Class<?> c = null;Object obj = null;Field field = null;int x = 0, statusBarHeight = 0;try {c = Class.forName("com.android.internal.R$dimen");obj = c.newInstance();field = c.getField("status_bar_height");x = Integer.parseInt(field.get(obj).toString());statusBarHeight = mContext.getResources().getDimensionPixelSize(x);} catch (Exception e1) {e1.printStackTrace();}return statusBarHeight;}/*** 获取手机屏幕的宽度** @param mContext 上下文* @return*/public static int getScreenWidth(Context mContext) {int screen[] = getScreenSize(mContext);return screen[0];}/*** 获取手机屏幕的高度** @param mContext 上下文* @return*/public static int getScreenHeight(Context mContext) {int screen[] = getScreenSize(mContext);return screen[1];}
}

对于dip、dp、px和sp,之前不太理解的是dip和px之间的区别,我们知道google的推荐,像素统一使用dip,字体统一使用sp,接下来具体说明一下:
1. dip: device independent pixels(设备独立像素):不同设备显示效果不同,dip与屏幕密度有关,而屏幕密度又和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这这个,不依赖像素。 dip的换算: dip(value)=(int) (px(value)/1.5 + 0.5)
2. dp: 和dip是完全一样的,只是名字不同而已。
3. px: pixels(像素),绝对像素,不同的设备不同的显示屏显示效果是一样的,这个是多少就永远是多少不会改变。
4. sp: scaled pixels(放大像素). 主要用于字体显示。

下面引用一下上面的屏幕工具类

Log.e("获取状态栏高度", String.valueOf(ScreenUtil.getStatusBarHeight(mContext)));Log.e("获取手机屏幕的宽度", String.valueOf(ScreenUtil.getScreenWidth(mContext)));Log.e("获取手机屏幕的高度", String.valueOf(ScreenUtil.getScreenHeight(mContext)));

下面是打印的日志

更多推荐

Android 屏幕分辨率工具类使用

本文发布于:2024-03-23 16:42:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740457.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:屏幕分辨率   工具   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!