该节主要记录从代码中获取与屏幕适配相关的各个參数:

Java代码例如以下

public class ScreenUtil {

	/**
* Note:
* 仅仅有activity能够使用getWindowManager。否则应该使用
* Context.getResources().getDisplayMetrics()来获取
*/ /**
* 获取DisplayMetric相关參数
* @param context
* @return
*/
public static String getMetricParams(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
return "density:"+dm.density+";densityDpi:"+dm.densityDpi
+";height:"+dm.heightPixels+";width:"+dm.widthPixels
+";scaledDensity:"+dm.scaledDensity+";xdpi:"+dm.xdpi
+";ydpi:"+dm.ydpi;
} /**
* 获取屏幕尺寸,单位为像素
* @param context
* @return
*/
public static String getScreenSizeInInPixels(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
double heightInInPixels = (double)dm.heightPixels;
double widthInInPixels = (double)dm.widthPixels;
return "高:"+heightInInPixels+" 宽:"+widthInInPixels+" 单位(像素)";
} /**
* 获取屏幕尺寸,单位为英寸
* 计算屏幕尺寸应该使用精确密度:xdpi ydpi来计算
* 使用归一化密度:densitydpi是错误的。它是固定值,
* 120 160 240 320 480,依据dp计算像素才使用它
* @param context
* @return
*/
public static String getScreenSizeInInch(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
double heightInInch = (double)dm.heightPixels / (double)dm.ydpi;
double widthInInch = (double)dm.widthPixels / (double)dm.xdpi;
double ScrrenSizeInInch = Math.sqrt(heightInInch*heightInInch
+ widthInInch*widthInInch);
return "高:"+heightInInch+" 宽:"+widthInInch+" 尺寸:"+ScrrenSizeInInch
+" 单位(英寸)";
} /**
* 获取屏幕尺寸,单位为dp
* @param context
* @return
*/
public static String getScreenSizeInInDp(Activity context){
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
float heightInInDp = px2dip((Context)context, (float)dm.heightPixels);
float widthInInDp = px2dip((Context)context, (float)dm.widthPixels);
return "高:"+heightInInDp+" 宽:"+widthInInDp+" 单位(dp)";
} /**
* dp转px
* @param context
* @param dpValue
* @return
*/
public static int dip2px (Context context, float dpValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dpValue*scale+0.5f);
} /**
* px转dp
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue/scale+0.5f);
} }

XML的设置:

<support-screens

android:anyDensity = "true"

android:largeScreens = "true"

android:normalScreens = "true"

android:resizeable = "true"

android:smallScreens = "true

android:xlargeScreens = "true">

android:anyDensity = "true"时。应用程序安装在不同的密度的终端上面,

程序分别会去载入xxhdpi, xhdpi, hdpi, mdpi,ldpi目录中的资源。

Android适配方案小结(二)的更多相关文章

  1. Android适配方案小结(一)

    相关计量单位介绍: px:是屏幕的像素点,不同设备显示的效果一样. in:英寸(1英寸等于2.54cm) mm:毫米 pt:磅, 1/72英寸 dp:device independent pixels ...

  2. 适配方案(二)之PC端适配

    PC端 特点 PC端的屏幕具备以下特点: 屏幕大小一般是大于 13.3英寸 用户会经常拖拉浏览器的大小 原因 正是因为 PC端上的浏览器大小会经常被改变,而且改变的范围还很大,用户会全屏浏览器,用户也 ...

  3. Android 目前最稳定和高效的UI适配方案

    Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计 ...

  4. 适用于hips ui的iPhoneX及以上适配方案

    版本信息: hips ui: 0.1.43 须知: 随着hips ui的迭代,可能会解决适配问题,所以下面的方案是有时效性的. 如果你项目上很紧急,可以直接看第三部分解决方案,复制粘贴代码即可. 一. ...

  5. android多分辨率多密度下界面适配方案

    前言 Android 设计之初就考虑到了UI在多平台的适配,它本身提供了一套完善的适配机制,随着版本的发展适配也越来越精确,UI适配主要受平台两个因素的影响:屏幕尺寸 (屏幕的像素宽度及像素高度)和屏 ...

  6. android多分辨率多屏幕密度下UI适配方案

    相关概念 分辨率:整个屏幕的像素数目,为了表示方便一般用屏幕的像素宽度(水平像素数目)乘以像素高度表示,形如1280x720,反之分辨率为1280x720的屏幕,像素宽度不一定为1280 屏幕密度:表 ...

  7. 【cocos2d-x 手游研发小技巧(3)Android界面分辨率适配方案】

    先感叹一下吧~~android的各种分辨率各种适配虐我千百遍,每次新项目我依旧待它如初恋···· 每家公司都有自己项目工程适配的方案,这种东西就是没有最好,只有最适合!!! 这次新项目专项针对andr ...

  8. android屏幕适配方案

    曾经看了android的屏幕适配方案,有非常多种.当中自己用到的一种是:先找一款主流的分辨率的android机,如:1080*1920的分辨率做基准,然后在这个基准上.调整好一切布局.图片.适配其它手 ...

  9. Android 屏幕适配方案

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45460089: 本文出自:[张鸿洋的博客] 1.概述 大家在Android开发 ...

随机推荐

  1. 【linux高级程序设计】(第十四章)TCP高级应用 3

    控制socket文件描述符属性 1.set/getsockopt()修改socket属性 int getsockopt (int __fd, int __level, int __optname, v ...

  2. 第十四届华中科技大学程序设计竞赛 B Beautiful Trees Cutting【组合数学/费马小定理求逆元/快速幂】

    链接:https://www.nowcoder.com/acm/contest/106/B 来源:牛客网 题目描述 It's universally acknowledged that there'r ...

  3. 「kuangbin带你飞」专题二十 斜率DP

    layout: post title: 「kuangbin带你飞」专题二十 斜率DP author: "luowentaoaa" catalog: true tags: mathj ...

  4. Logger Rate Limiter -- LeetCode

    Design a logger system that receive stream of messages along with its timestamps, each message shoul ...

  5. 九. 常用类库、向量与哈希2.Object类

    Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...

  6. java.util.List.subList ,开区间和闭区间

    比如集合中的内容为1,2,3,4,5list.sublist(2,4)就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的就是说是从大于等于2到小于4那子集内容就是3,4(集合的下标 ...

  7. JQuery插件开发格式

    原地址 一.jQuery扩展 1.$.extend(object) 类似于.Net的扩展方法,用于扩展jQuery.然后就可以用$.的方式调用. $(function(){ $.extend({ fu ...

  8. Java 并发工具包 java.util.concurrent 用户指南(转)

    本文转自http://blog.csdn.net/defonds/article/details/44021605/ 感谢作者 1. java.util.concurrent - Java 并发工具包 ...

  9. Makefile之嵌套执行make

    1.在Makefile中 一般使用一个总控Makefile来指明文件的编译规则 如: subsystem: cd subdir && $(MAKE) 其等价于 subsystem: $ ...

  10. vi中使用“/”查找字符

    在vi 文件中使用"/"查找字符串 命令模式下,输入 /word 后回车,即查找word,按 n 查找下一个匹配单词,按 N 查找上一个匹配单词.