
不同的layout
Android手机屏幕大小不一,有480x320, 640x360, 800x480,让app适应不同屏幕,需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入Rjava里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
hdpi、mdpi、ldpi
在之前的版本中,只有一个drawable,而21版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
(1)drawable-hdpi里面存放高分辨率的,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的。
更正:应该是对应不同density 的
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本。
屏幕方向:
横屏竖屏自动切换:
可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。
不同分辨率横屏竖屏自动切换:
以800x600为例 :
可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录
不切换:
以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把贴上来。
还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。
要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:
在AndroidManifestxml里面配置一下就可以了。
加入这一行android:screenOrientation="landscape"。
例如(landscape是横向,portrait是纵向):
以下是JAVA代码:
<xml version="10" encoding="utf-8"><manifest xmlns:android=";
另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。
而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的 onConfigurationChanged方法。实现方式如下,不需要做太多的内容:
@Overridepublic void onConfigurationChanged(Configuration newConfig) {
superonConfigurationChanged(newConfig);
if (thisgetResources()getConfiguration()orientation == ConfigurationORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (thisgetResources()getConfiguration()orientation == ConfigurationORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}
写一个支持多分辨的程序,基于16开发的,建立了三个资源文件夹drawable-hdpi drawable-mdpi drawable-ldpi,里面分别存放7272 4848 3636的icon图标文件。当我在G1(15的系统)上测试时,图标应该自适应为4848才对啊,但实际显示的是3636。怎么才能让其自适应 4848的icon图标呢 ?
解决办法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹。
主要是1080P,即分辨率为19201080。也有部分手机上到2K,即25601440
这个主要看屏幕材质
lcd的话1080p显示是没有什么大的问题的,也有部分高端手机上2K屏幕,显示更加细腻
oled的屏幕尤其是amoled的屏幕在1080P的分辨率下由于像素点排列原因在显示字体的时候会有彩边现象,但是在2K分辨率下彩边现象就会好很多,基本可以忽略不计,所以采购屏幕材质为amoled的手机的时候最好采购2k分辨率的。
此外还有一个个例就是索尼,它在自己旗舰机Xperia Z5 Premiu和Xperia XZ Premium上面使用了4K分辨率的显示屏,显示效果更加细腻。
最后还是提醒一点,手机分辨率越高手机的耗电就越高,谨慎购买超高分辨率的手机。
1、Android插入HDMI输出,分辨率取决于设备本身的分辨率,如果设备支持1080P那么就可以输出1080P分辨率,如果设备支持720P那么就可以输出720P分辨率。
2、Android手机一般都支持480P、720P、1080P、4K、8K等多种分辨率,取决于手机的型号和芯片类型,一般来说,最高分辨率可以达到1080P。
3、HDMI接口也有不同的版本,如HDMI 10、HDMI 14、HDMI 20等,每个版本的HDMI接口都有不同的分辨率,一般HDMI 14及以下的接口最高可以支持1080P分辨率,而HDMI 20及以上的接口可以支持4K分辨率及以上的分辨率。
我的手机是中兴U880
分辨率为480800px,
程序测试为320533dp。
这是正常的。因为单位不同嘛。
这涉及到dp和px的转换问题。
首先,480800的手机(WVGA)density=240。
转换公式如下:
pixs =dips (density/160)
dips=(pixs160)/density
480800单位是px。而320533单位是dp。把数据代入轮换公式,你会发现是符合的。
补充:
px:单位尺寸里的像素点
dp:一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
新的sdk为了适配不同的屏幕分辨率的机型,已经陆续取消采用像素px作为布局单位。这主要是针对不同设备而言的。因为px不管在什么样的设备上都是那样长,但是dip会根据设备变化。
希望对你有帮助。
以上就是关于安卓app设计屏幕分辨率适配问题怎么解决全部的内容,包括:安卓app设计屏幕分辨率适配问题怎么解决、android手机主流屏幕分辨率是多少、android插入hdmid出分辨率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)