Android 屏幕自适应方向尺寸
最近感觉要被屏幕适配玩死了……
安卓的手机为虾米不能像苹果那样只有几个分辨率呢?为什么呢!!!!!!!阿门……
目前想到有两种解决办法……
第一种:
HTML5+CSS3+WebView交互……目前还在研究,空了放demo
第二种:
通过安卓UI自己的layout来处理:
1.屏幕界面布局
在 res 目录下创建不同的 layout(drawable也支持)文件夹,比如 layout-640x360 、layout-800x480 ,所有的 layout 文件在编译之后都会写入 R.java 里,而系统将根据屏幕的大小自己选择合适的 layout 进行使用
2.多分辨率支持
支持多分辨率有 mdpi、ldpi、hdpi 3个文件。
hdpi 里面存放高分辨率的图片,如 WVGA (480x800),FWVGA (480x854) ;(PS:偶很纠结480*854的分辨率,纠结啊!!!!)
mdpi 里面存放中等分辨率的图片,如 HVGA (320x480) ;
ldpi 里面存放低分辨率的图片,如 QVGA (240x320) 。
系统将根据机器的分辨率来分别到这几个文件夹里面去找对应的图片,在程序开发中,为了兼容不同平台不同屏幕,建议将不同版本图片根据需求存放在各自对应的文件夹中。
3.获得屏幕大小
- DisplayMetrics metric = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(metric);
- int width = metric.widthPixels; // 屏幕宽度(像素)
- int height = metric.heightPixels; // 屏幕高度(像素)
- float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
- int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
话说在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,具体的内容如下:
- <supports-screens
- android:smallScreens="true"
- android:normalScreens="true"
- android:largeScreens="true"
- android:resizeable="true"
- android:anyDensity="true" />
4.还有自动横屏之类的,不准备支持了……恩~阿门……android:screenOrientation="portrait"全部竖着…