控制Android分辨率
Android分辨率情况:
布局和字体等大小:
一 在res目录下进行设置,简单、方便、低效
二在Java文件中控制,效率较高,但是移植性和维护困难
对于图片的自适应:
一是9patch图
二是drawable-hdpi-800x480和drawable-hdpi-854x480,在它们里面放不同的图片,这样图片也能自适应了。
一、 布局和字体等大小
1、在res目录下,一般如下设置
(1)layout_weight
目前最为推荐的Android多屏幕自适应解决方案。
(2)自定义尺寸法
2、Java文件中控制
一般只是在代码中重新设定控件的宽高度而已,其他属性依然是交给xml布局文件的。
写两个静态变量用来保存当前屏幕的宽高度:
public class Constant {
public static int displayWidth; //屏幕宽度
public static int displayHeight; //屏幕高度
}
然后在第一个Activity启动的时候,获取这两个值
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
Constant.displayWidth = displayMetrics.widthPixels;
Constant.displayHeight = displayMetrics.heightPixels;
设置空间的宽和高
// 第一个按钮,宽度100%,高度10%
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
(int) (Constant.displayHeight * 0.1f + 0.5f));
btn1.setLayoutParams(params);
// 第二个按钮,宽度100%,高度30%
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
(int) (Constant.displayHeight * 0.3f + 0.5f));
btn2.setLayoutParams(params2);
例如values-800x480。在该文件夹下创建一个dimens.xml文件,定义各种字体的大小。那么系统就会自动根据你手机屏幕的分辨率去调用响应的文件夹。需要注意的是,一些比较极端的情况,比如1280x800 1280x768 1280x720,这里可以使用一个兼容性的布局,如果里面含有图片而且对于宽度要求十分精确地话,建议修正图片大小或者做填充处理(在边缘为纯色的情况下将背景填充为和边缘颜色一样的色值即可)。
Android9 patch 图片 (.9.png 格式图片) 的特点和制作
一.9.png格式的文件的特点
与传统的png 格式图片相比, 9.png 格式图片在图片四周有一圈一个像素点组成的边沿,该边沿用于对图片的可扩展区和内容显示区进行定义。这种格式的图片在android 环境下具有自适应调节大小的能力。(1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。(2)允许开发人员定义内容显示区,用于显示文字或其他内容. 如下图所示:左侧和上方的黑线交叉的部分即可扩展区域,右侧和下方的黑线交叉的部分即内容显示区.
二 .9.png 图片的制作
android sdk 的 tools文件夹下提供了制作该格式图片的工具 draw9patch.bat。使用此工具打开任意图片之后,将鼠标置于图片上。被黑色覆盖的是不可编辑(锁住)的区域,周围的一圈一个像素的边沿是可编辑区域。按住鼠标左键,在左侧和上方的边沿画出可扩展区。
在右侧和下方画出内容显示区。完成绘制以后,选择file-> save ,即可保存为 .9.png 格式的文件,并在android项目中使用。
实际项目中,其他公司决绝方案
案例一
1.屏幕大小
在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,
而系统会根据屏幕的大小自己选择合适的layout进行使用。
2.字体自适应大小
首先根据不同分辨率获取不同字体大小。
在RES里创建
values-480x320/strings.xml 里面设置<dimenname="Text_size">30px</dimen>
和 values-800x400/strings.xml 里面设置<dimenname="Text_size">30px</dimen>
分别代表480X320 和 800X400分辨率情况下 字号为30px和40px;
在java文件中这样调用:int sizeOfText = (int)this.getResources().getDimension(R.dimen.Text_size);
案例二
用密码获取屏幕宽高,根据图片原比例,在代码中自己设置高宽。
WindowManager wm = (WindowManager) this
.getSystemService(Context.WINDOW_SERVICE);
width= wm.getDefaultDisplay().getWidth();// 屏幕宽度
minHight= width * 381 / 480;
calenderTableLayout.setMinimumHeight((int)minHight);
案例三
做一张超大的图片,然后等比例缩小图片,来进行图片的适配。
分享到:
相关推荐
Android自适应分辨率,让程序自动适应屏幕大小
这个是android屏幕自适应的例子,可以在360x480,480x800 480x854 640x360分辨率,是自适应的,不会因为屏幕图片发上变化!
android 模拟器横屏,android 虚拟机横屏,android 判断横屏,android 禁止横屏,android 强制横屏,android 横屏事件,android 自适应分辨率,android 屏幕自适应,android 图片自适应,android 横屏布局。...
多分片率屏幕自适应的原理分析和实现方案,详细分析了layout_weight的原理和应用
android安卓开发app如何做到自适应手机屏幕大小,适应不同分辨率的手机.zip
对屏幕相关概念,如:分辨率、屏幕尺寸、屏幕密度、密度无关的像素等进行讲解,并且详细描述了屏幕自适应的多种方法以及实现代码
该文档详细说明了关于android设备屏幕分辨率大小的问题,为开发者开发应用中遇到的自适应问题提供帮助
使用android 各种屏幕分辨率介绍 低分辨,中分辨率,高分辨率
主要介绍了Android字体大小自适应不同分辨率的解决办法的相关资料,需要的朋友可以参考下
本资源适应以下分辨率的android设备,不管android设备尺寸大小 像素宽 =1024 高 =720 ; 像素宽 =854 高 =480 ; nexus4 768 1280 1280 720 方法:先得到手机屏幕的像素px,再根据像素PX得到 手机屏幕的独立像素...
关于Android屏幕适配的概念,屏幕自适应,如何支持多屏幕,多屏幕测试及一些编码建议
android自动适应屏幕源码
Android自适应屏幕,加深对不同分辨率屏幕等的了解
android将屏幕大小分为四个级别(small,normal,large,and extra large)。 1.3屏幕密度 每英寸像素数 手机可以有相同的分辨率,但屏幕尺寸可以不相同, Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=...
手机的屏幕有大有小,移动web最好做成响应式布局,也就是自适应屏幕,没有固定宽高,这样的话,在所有手机上都可以正常显示。关于移动端页面按手机屏幕分辨率自动缩放的js,先附上代码 [removed] var phoneWidth =...
安卓app手机屏幕适配技巧.zip 让android app适合不同尺寸的屏幕 分辨率mdpi、hdpi 、xhdpi、xxhdpi 4条黄金法则 9-patch PNG
安卓开发在不同分辨率下面的自适应处理xml文件