1、在xml布局文件中,控件的宽度和高度用  dp ;   字体大小用 sp

2、根据屏幕的宽高来动态的适配 , 获取屏幕的宽高的两种方法:

第一种方法:

    /*** 屏幕的宽度* 屏幕的高度* @return*/public void initPhone1( Activity activity ){int phone_Width  = activity.getWindowManager().getDefaultDisplay().getWidth() ;    //单位是 pxint phone_Height = activity.getWindowManager().getDefaultDisplay().getHeight() ;   //单位是 px
    }

这种方法会报警告,The method getWidth() from the type Display is deprecated

意思是这种方法已经过时,所以建议用第二种方法:

第二种方法:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int  Phone_width  = dm.widthPixels ;int Phone_height = dm.heightPixels ;

注意:1、在 Java 代码中获取的宽度和高度,以 px (像素) 为单位。 与xml 文件中的 dp 不一样 。

2、经过测试,用两种方法分别获取手机屏幕的宽度和高度,得到的结果是一样的 。

我的手机是小米1 ,480 x 854  px

3、通常情况下,一个 layout 布局文件里面的控件的大小,有两种设置控件宽高的 方法 。

一种是在 xml 中设置 , 如果一个控件在 xml 中有定义,控件的宽度和高度用  dp ;   字体大小用 sp 。

另外一种 就是在java 代码中动态设置 。

    TextView tv2 = (TextView) findViewById( R.id.tv2 ) ;LinearLayout.LayoutParams params2 = (LayoutParams) tv2.getLayoutParams() ;params2.width = 300 ;    //这里的300代表  300 px params2.height = 100 ;   //这里的100代表  100 px tv2.setLayoutParams( params2 );

4、因为在 xml 布局中 单位是 dp , 在 java 代码中 的单位是 px 。

为了两者的大小保持一致,所以需要将两者进行换算 。

DensityUtil 类

package com.example.bb;import android.content.Context;public class DensityUtil {/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */  public static int dip2px(Context context, float dpValue) {  final float scale = context.getResources().getDisplayMetrics().density;  return (int) (dpValue * scale + 0.5f);  }  /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */  public static int px2dip(Context context, float pxValue) {  final float scale = context.getResources().getDisplayMetrics().density;  return (int) (pxValue / scale + 0.5f);  }  }

5、由于android 的屏幕大小有很多中,分辨率也是多种多样的 。

为了准确的获取屏幕的高度和宽度,需要在AndroidManifest.xml 中加入 supports-screens 节点 。

?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.app01"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="19" /><!-- 获得手机正确的宽度和高度 --><supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true"android:resizeable="true"android:smallScreens="true" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.app01.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

android 多屏幕适配 : 第一部分相关推荐

  1. Android的屏幕适配

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  2. Android开发屏幕适配全攻略

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  3. android相机横屏竖屏,GitHub - qixuefeng/CameraAdapt: Android相机屏幕适配

    CameraAdaptDemo Android相机屏幕适配 该项目主要是为了做相机下的屏幕适配 具体思路可以参见我的这篇文章 Android 相机屏幕适配 测试: 机型:华为荣耀8 (厂商:honor ...

  4. android – 多屏幕适配相关

    android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).a ...

  5. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

  6. Android TV 屏幕适配

    Android TV 屏幕适配 1 1.dpi ,dip(dp), density 几个比较难描述的概念,摘这个blog的: http://www.cnblogs.com/wader2011/arch ...

  7. Android AutoSize屏幕适配中图标及字体放大的问题解决

    现象: 项目接入Android AutoSize屏幕适配框架,项目本身主界面是横屏操作的界面.测试中用户反馈在vivo x27的手机或者其他机型也会出现(没测试出来)横屏后所有的图标及字体都放大. 原 ...

  8. Android多屏幕适配-手机

    1.常用单位及其关系 px:像素 inch:英寸 pt:1/72 英寸 dpi:一英寸长的直线上的像素点的数量,即像素密度.不同的设备,dpi值不同,显示效果不同,dpi的值跟设备硬件有关.标准值是1 ...

  9. android 特殊屏幕适配,Android屏幕适配(2)常见:第一种

    前言: Android屏幕适配(1)基础知识篇 Android屏幕适配(3)常见:第二种 Android屏幕适配(4)常见:第三种 Android屏幕适配(5)常见:归纳总结 常见的屏幕配置问题(一些 ...

最新文章

  1. BOS项目 第2天(BaseDao、BaseAction、用户登录、自定义strust登录拦截器)
  2. ASP.Net中让网页“立即过时”
  3. 图像处理(十)基于特征线的图像变形-Siggraph 1992
  4. python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
  5. 使用ImageMagick 在图片上绘制粗斜体的中文也许是一个错误。
  6. ASP.NET获取任意网页HTML代码
  7. 我心中的MySQL DBA
  8. 解决WDCP3环境gbk网站编码程序乱码问题
  9. SCOI2020游记
  10. python数据获取手段包括哪些_python开发应用-本地数据获取方法
  11. 用php生成HTML文件的类
  12. alpine_glibc 构建sun jdk 8的docker镜像
  13. 安卓手机绘制uml图_Android Studio中绘制simpleUML类图详细说明及使用
  14. lm opencv 算法_相机模型与标定(七)--LM算法在相机标定中的使用
  15. linux sftp目录无法切换,linux – SFTP用户无法编辑或创建文件
  16. pcie握手机制_图解PCIE原理(从软件角度)
  17. 中职计算机多媒体教材,中职汽车维修课中计算机多媒体教学的实施
  18. matlab自适应遗传算法代码,matlab自适应遗传算法
  19. Cocos Creator | 碰撞检测优化-四叉树
  20. 浏览器打开pdf乱码

热门文章

  1. Linux下使用tee既在屏幕上显示输出,又把输出写进文件
  2. Java 批量文件不打包下载_【Java】Java批量文件打包下载zip
  3. maven打jar包,导入本地jar
  4. 青海省计算机应用能力考试,青海省2015年职称计算机应用能力考试西宁考区四月份考试安排通知...
  5. 单片机中SDZ是什么意思_合泰单片机ADC转换程序
  6. 2020年班级管理html,2020年七年级班主任工作计划
  7. linux常用操作命令详解
  8. 怎么进入mysql workspace_MySQL 继续-- Win7 安装及后续工作
  9. null未定义_PHP的isset()、is_null、empty()使用总结
  10. java list_Java集合-List