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

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. 常用PHP数组函数总结

    1.array_values()  以索引数组的形式返回数组的中所有元素的值 array_keys()  以索引数组的形式返回数组的中所有元素的值 2.in_array()   检查数组中是否存在某值 ...

  2. [BZOJ1032][JSOI2007]祖码Zuma 区间dp

    1032: [JSOI2007]祖码Zuma Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1105  Solved: 576 [Submit][S ...

  3. python 读取excel数据插入到另外一个excel

    #-*-coding:utf-8-*- import xlrd import xlwt def excel_copy(dir_from, dir_to, sheet_name): '''从一个exce ...

  4. [python] win7 64位 安装pygame

    1.下载pygame 2.python 下载3.2.*  32位的(电脑64位没关系的) 3.先安装python,再安装pygame 4.验证是否成功 打开IDLE >>>impor ...

  5. 51nod 1090 3个数和为0【二分】

    1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从 ...

  6. Kruskal+LCA【p2245】 星际导航

    Description sideman做好了回到Gliese 星球的硬件准备,但是sideman的导航系统还没有完全设计好.为了方便起见,我们可以认为宇宙是一张有\(N\) 个顶点和\(M\) 条边的 ...

  7. Function——记忆化搜索

    题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,2 ...

  8. 4.NFC前台调度系统

    使用目的:当前Activity能直接响应NFC标签,而不需要用户在choose所有能处理的Activity. 使用步骤: 第一步:在onCreate()方法中,创建一个PendingIntent对象 ...

  9. Visio中插入公式

    也可以直接插入MathType公式,我原来的word不显示MathType,现在显示了,不过插入后太小,那是因为字体小,拖动托大就行. 在word中插入-对象-公式3.0对象(安装MathType后, ...

  10. 在Ubuntu Server 中安装图形用户界面

    使用ubuntu server安装lamp主机非常的方便,只要在安装系统的步骤中选择就是了 .但是很多时候我需要在图形界面下管理主机更加方便.今天的教程就是教大家安装图形界面. 首先你需要确定你的源文 ...