android 多屏幕适配 : 第一部分
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 多屏幕适配 : 第一部分相关推荐
- Android的屏幕适配
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Android开发屏幕适配全攻略
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- android相机横屏竖屏,GitHub - qixuefeng/CameraAdapt: Android相机屏幕适配
CameraAdaptDemo Android相机屏幕适配 该项目主要是为了做相机下的屏幕适配 具体思路可以参见我的这篇文章 Android 相机屏幕适配 测试: 机型:华为荣耀8 (厂商:honor ...
- android – 多屏幕适配相关
android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).a ...
- Android开发——Android手机屏幕适配方案总结
0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...
- Android TV 屏幕适配
Android TV 屏幕适配 1 1.dpi ,dip(dp), density 几个比较难描述的概念,摘这个blog的: http://www.cnblogs.com/wader2011/arch ...
- Android AutoSize屏幕适配中图标及字体放大的问题解决
现象: 项目接入Android AutoSize屏幕适配框架,项目本身主界面是横屏操作的界面.测试中用户反馈在vivo x27的手机或者其他机型也会出现(没测试出来)横屏后所有的图标及字体都放大. 原 ...
- Android多屏幕适配-手机
1.常用单位及其关系 px:像素 inch:英寸 pt:1/72 英寸 dpi:一英寸长的直线上的像素点的数量,即像素密度.不同的设备,dpi值不同,显示效果不同,dpi的值跟设备硬件有关.标准值是1 ...
- android 特殊屏幕适配,Android屏幕适配(2)常见:第一种
前言: Android屏幕适配(1)基础知识篇 Android屏幕适配(3)常见:第二种 Android屏幕适配(4)常见:第三种 Android屏幕适配(5)常见:归纳总结 常见的屏幕配置问题(一些 ...
最新文章
- BOS项目 第2天(BaseDao、BaseAction、用户登录、自定义strust登录拦截器)
- ASP.Net中让网页“立即过时”
- 图像处理(十)基于特征线的图像变形-Siggraph 1992
- python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
- 使用ImageMagick 在图片上绘制粗斜体的中文也许是一个错误。
- ASP.NET获取任意网页HTML代码
- 我心中的MySQL DBA
- 解决WDCP3环境gbk网站编码程序乱码问题
- SCOI2020游记
- python数据获取手段包括哪些_python开发应用-本地数据获取方法
- 用php生成HTML文件的类
- alpine_glibc 构建sun jdk 8的docker镜像
- 安卓手机绘制uml图_Android Studio中绘制simpleUML类图详细说明及使用
- lm opencv 算法_相机模型与标定(七)--LM算法在相机标定中的使用
- linux sftp目录无法切换,linux – SFTP用户无法编辑或创建文件
- pcie握手机制_图解PCIE原理(从软件角度)
- 中职计算机多媒体教材,中职汽车维修课中计算机多媒体教学的实施
- matlab自适应遗传算法代码,matlab自适应遗传算法
- Cocos Creator | 碰撞检测优化-四叉树
- 浏览器打开pdf乱码
热门文章
- Linux下使用tee既在屏幕上显示输出,又把输出写进文件
- Java 批量文件不打包下载_【Java】Java批量文件打包下载zip
- maven打jar包,导入本地jar
- 青海省计算机应用能力考试,青海省2015年职称计算机应用能力考试西宁考区四月份考试安排通知...
- 单片机中SDZ是什么意思_合泰单片机ADC转换程序
- 2020年班级管理html,2020年七年级班主任工作计划
- linux常用操作命令详解
- 怎么进入mysql workspace_MySQL 继续-- Win7 安装及后续工作
- null未定义_PHP的isset()、is_null、empty()使用总结
- java list_Java集合-List