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);
案例三
做一张超大的图片,然后等比例缩小图片,来进行图片的适配。
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);
案例三
做一张超大的图片,然后等比例缩小图片,来进行图片的适配。
上一篇: Google开源Material Design图标
下一篇: pytorch 1.7训练保存的模型在1.4低版本无法加载:frame #63: <unknown function> + 0x1db3e0 (0x55ba98ddd3e0 in /data/user
推荐阅读
-
android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)
-
Android屏幕适配工具类 Android自动生成不同分辨率的值
-
Android 简单的弹出框(在屏幕中间,传string[],根据内容框框大小自适应)
-
ListView根据屏幕高度自适应设置Item的高度(Android)
-
Android基础之使用Fragment适应不同屏幕和分辨率(分享)
-
android 如何获得正确的分辨率[使用getRealSize去获得屏幕宽和高像素]
-
修改屏幕分辨率的指令[debug模式下]&&android studio 清空
-
修改屏幕分辨率的指令[debug模式下]&&android studio 清空
-
Android屏幕分辨率
-
android 屏幕分辨率