美文网首页
屏幕分辨率

屏幕分辨率

作者: 三度_f8ac | 来源:发表于2018-05-24 09:00 被阅读0次

importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.PrintWriter;publicclassMakeXml{// E:\javaAppprivatefinalstaticString rootPath ="E:\\javaApp\\values-{0}x{1}\\";privatefinalstaticfloatdw =320f;privatefinalstaticfloatdh =480f;privatefinalstaticString WTemplate ="{1}px\n";privatefinalstaticString HTemplate ="{1}px\n";publicstaticvoidmain(String[] args){ makeString(240,320); makeString(320,480); makeString(480,800); makeString(480,854); makeString(540,960); makeString(600,1024); makeString(720,1184); makeString(720,1196); makeString(720,1280); makeString(768,1024); makeString(800,1280); makeString(1080,1812); makeString(1080,1920); makeString(1440,2560); }publicstaticvoidmakeString(intw,inth){ StringBuffer sb =newStringBuffer(); sb.append("\n"); sb.append("");floatcellw = w / dw;for(inti =1; i <320; i++) { sb.append(WTemplate.replace("{0}", i +"").replace("{1}", change(cellw * i) +"")); } sb.append(WTemplate.replace("{0}","320").replace("{1}", w +"")); sb.append(""); StringBuffer sb2 =newStringBuffer(); sb2.append("\n"); sb2.append("");floatcellh = h / dh;for(inti =1; i <480; i++) { sb2.append(HTemplate.replace("{0}", i +"").replace("{1}", change(cellh * i) +"")); } sb2.append(HTemplate.replace("{0}","480").replace("{1}", h +"")); sb2.append(""); String path = rootPath.replace("{0}", h +"").replace("{1}", w +""); File rootFile =newFile(path);if(!rootFile.exists()) { rootFile.mkdirs(); } File layxFile =newFile(path +"lay_x.xml"); File layyFile =newFile(path +"lay_y.xml");try{ PrintWriter pw =newPrintWriter(newFileOutputStream(layxFile)); pw.print(sb.toString()); pw.close(); pw =newPrintWriter(newFileOutputStream(layyFile)); pw.print(sb2.toString()); pw.close(); }catch(FileNotFoundException e) { e.printStackTrace(); } }publicstaticfloatchange(floata){inttemp = (int) (a *100);returntemp /100f; } }

找到生成的文件复制到Android项目里的res目录然后用android:layout_width="@dimen/x184"来指定大小

1.1 手机常见分辨率:

4:3

VGA    640480 (Video Graphics Array)

QVGA  320

240 (Quarter VGA)

HVGA  480320 (Half-size VGA)

SVGA  800

600 (Super VGA)

5:3

WVGA  800480 (Wide VGA)

16:9

FWVGA 854

480 (Full Wide VGA)

HD        19201080 High Definition

QHD    960

540

720p    1280720  标清

1080p  1920

1080 高清

手机:

iphone 4/4s    960640 (3:2)

iphone5        1136

640

小米1            854480(FWVGA)

小米2            1280

720

1.2 分辨率对应DPI

"HVGA    mdpi"

"WVGA  hdpi "

"FWVGA hdpi "

"QHD      hdpi "

"720P    xhdpi"

"1080P  xxhdpi "

2 屏幕适配的注意事项

2.1 基本设置

2.1.1 AndroidManifest.xml设置

在中Menifest中添加子元素

android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。

相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:

如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源;

如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源,其他同理;

如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。

2.1.2 横屏竖屏目录区分

drawable

a) drawable-hdpi该图片即适用于横屏,也适用于竖屏;

b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源;

c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。其他同理。

layout

在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

2.2 多屏幕适配的4条黄金原则

在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent和dp;

具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,match_parent或dp比px更好,文字大小应该使用sp来定义。

在程序的代码中不要出现具体的像素值,在dimens.xml中定义;

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

不使用AbsoluteLayout(android1.5已废弃) ,可以使用RelativeLayout替代;

对不同的屏幕提供合适大小的图片。

不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra-high为96×96。

2.3 使用9-patch PNG图片

使用图片资源时,如果出现拉伸,因为图片处理的原因,会变形,导致界面走形。9-patch PNG图片也是一种标准的PGN图片,在原生PNG图片四周空出一个像素间隔,用来标识PNG图片中哪些部分可以拉伸、哪些不可以拉伸、背景上的边框位置等。

“上、左”定义可拉伸区域

“右、下”定义显示区域,如果用到完整填充的背景图,建议不要通过android:padding来设置边距,而是通过9-patch方式来定义。

Android SDK中提供了编辑9-Patch图片的工具,在tools目录下draw9patch.bat,能够立刻看到编辑后的拉伸效果,也可以直接用其他图片编辑工具编辑,但是看不到效果。

2.4 不同的layout

Android手机屏幕大小不一,有480x320, 640x360, 800x480……

怎样才能让Application自动适应不同的屏幕呢?

其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360、layout-800x480……所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。

2.5 测试验证

一般使用AVD Manager创建多个不同大小的模拟器,如果条件具备,也可以直接用真机测试,这个比较靠谱。

相关文章

  • iOS iPhone & iPad屏幕分辨率

    iPhone屏幕分辨率 iPad屏幕分辨率

  • 网页版 获取屏幕分辨率

    常用屏幕分辨率 屏幕分辨率的高: window.screen.height;屏幕分辨率的宽: window.scr...

  • quick-lua适配方案分析

    1. 预备知识 1.1 屏幕分辨率 设计分辨率 屏幕分辨率:设备的实际屏幕显示分辨率设计分辨率:制作场景使用的分辨...

  • 屏幕尺寸

    屏幕分辨率 Screen resolution 屏幕分辨率是指纵横向上的像素点数,单位是px。屏幕分辨率确定屏幕上...

  • 多媒体技术应用知识点

    分辨率:分为屏幕分辨率、数字图像分辨率和设备分辨率。 屏幕分辨率:是指计算机显示器屏幕显示图像的最大显示区,以水平...

  • 屏幕尺寸和分辨率

    屏幕尺寸 屏幕尺寸: 屏幕对角线的长度 单位:英寸 一英寸: 2.54cm 屏幕分辨率 屏幕分辨率指的是...

  • iPhone 各机型屏幕尺寸

    手机设备型号屏幕尺寸 分辨率点数 (pt) 屏幕显示模式 分辨率像素(px) 屏幕比例 iPhone...

  • iOS各版本屏幕尺寸

    iPhone 屏幕数据 型号屏幕尺寸分辨率(pt)ReaderReader分辨率(px)渲染后(px)PPIiPh...

  • Android UI

    1、了解几个概念 (1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率...

  • 【Android高级进阶知识】Android 机型适配终极篇——

    1.分辨率/屏幕大小/密度的区别 (1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机...

网友评论

      本文标题:屏幕分辨率

      本文链接:https://www.haomeiwen.com/subject/imejjftx.html