欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android屏幕自适应分辨率 Android分辨率屏幕自适应 

程序员文章站 2022-05-27 10:29:39
...
控制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);
案例三
做一张超大的图片,然后等比例缩小图片,来进行图片的适配。