安卓app设计屏幕分辨率适配问题怎么解决

安卓app设计屏幕分辨率适配问题怎么解决,第1张

想要Android应用适应不同尺寸的屏幕,思路如下:

不同的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方法。实现方式如下,不需要做太多的内容:

@Override 

public 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出分辨率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10072385.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存