文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android屏幕分辨率工具类使用详解

2022-06-06 07:38

关注

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


package com.per.loadingwebviewdome;
import android.content.Context;
import android.util.DisplayMetrics;
import java.lang.reflect.Field;

public class ScreenUtil {
 
 public static int dip2px(Context mContext, float dpValue) {
 final float scale = mContext.getResources()
  .getDisplayMetrics().density;
 return (int) (dpValue * scale + 0.5f);
 }
 
 public static int px2dip(Context mContext, float pxValue) {
 final float scale = mContext.getResources()
  .getDisplayMetrics().density;
 return (int) (pxValue / scale + 0.5f);
 }
 
 private static int[] getScreenSize(Context mContext) {
 DisplayMetrics dm = mContext
  .getResources().getDisplayMetrics();
 int screenWidth = dm.widthPixels;
 int screenHeight = dm.heightPixels;
 return new int[]{screenWidth, screenHeight};
 }
 
 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;
 }
 
 public static int getScreenWidth(Context mContext) {
 int screen[] = getScreenSize(mContext);
 return screen[0];
 }
 
 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开发教程之实现toast工具类Android应用中使用SharedPreferences类存储数据的方法Android通过"记住密码"功能学习数据存储类SharedPreferences详解及实例简介Android应用中sharedPreferences类存储数据的用法android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)封装的android监听手指左右滑动屏幕的事件类分享Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】Android开发之多媒体文件获取工具类实例【音频,视频,图片等】android 一些工具类汇总Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯