android 4.1.2大小,Android应用如何支持屏幕多尺寸多分辨率问题

4、怎么解决这些问题

其实给出的解决方法也是官方文档中,这里会简单的写一点,有条件可以看一下参考中的链接。

4.1 Supporting Different Devices

4.1.1支持不同的语言

这一点是应用怎么实现国际化,使用values文件添加config_qualifier属性,例如:

MyProject/

res/

values/

strings.xml

values-es/

strings.xml

values-fr/

strings.xml

4.1.2支持不同的屏幕

Android手机的屏幕有两个属性,屏幕尺寸、屏幕密度。前面也介绍了屏幕的尺寸、密度。解决这个问题,我们需要声明不同的布局,不同的图片资源。屏幕的方向(横屏、竖屏)也是在这处理的。这个和前面国际化处理一样的,使用资源文件添加config_qualifier属性。

4.1.2.1 Create Different Layouts

Android中一般分为四种尺寸: small, normal, large, xlarge。

一般创建不同的布局来适配这四种尺寸。

适配不同尺寸可以创建下面目录:

MyProject/

res/

layout/

main.xml

layout-large/

main.xml

适配横屏、竖屏可以创建如下目录:

MyProject/

res/

layout/

main.xml

layout-land/

main.xml

如果需要同时适配,需要更多的条件:

MyProject/

res/

layout/              # default (portrait)

main.xml

layout-land/        # landscape

main.xml

layout-large/        # large (portrait)

main.xml

layout-large-land/  # large landscape

main.xml

Android3.2中为了适配平板的开发,增加了smallestWidth属性。详情参考。

4.1.2.2 Create Different Bitmaps

Android中图片资源是必不可少的,并且建议提供四种图片以适应不同的屏幕密度。Android中广义的屏幕密度分为4种( low, medium, high and extra-high )。他们的比例关系如下:

01.xhdpi: 2.0

02.hdpi: 1.5

03.mdpi: 1.0 (baseline)

04.ldpi: 0.75

如果你在mdpi中放置200x200的图片,建议你在mdpi中放置100x100的图片。

图片资源文件如下:

MyProject/

res/

drawable-xhdpi/

awesomeimage.png

drawable-hdpi/

awesomeimage.png

drawable-mdpi/

awesomeimage.png

drawable-ldpi/

awesomeimage.png

现在已经不建议使用ldpi,因为这样的手机基本没了大笑。

4.1.3支持不同的平台版本

Android版本的升级就会带来新的api,我们怎么适配不同的系统版本呢。

1、使用 Android Support Library

2、AndroidManifest文件配置minSdk、targetSdk。

01.

02.   

03.    ...

04.

3、检测版本号,根据版本号调用api

01.private void setUpActionBar() {

02.    // Make sure we're running on Honeycomb or higher to use ActionBar APIs

03.    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

04.        ActionBar actionBar = getActionBar();

05.        actionBar.setDisplayHomeAsUpEnabled(true);

06.    }

07.}

4、使用平台的Styles and Themes

4.2 Designing for Multiple Screens

Android设备包含phone、glass、watch、autocar等等,这些屏幕尺寸从小到watch大到电视,我们的应用能够兼容这么多的尺寸是很重要的。

4.2.1支持不同屏幕尺寸

4.2.1.1 Use "wrap_content" and "match_parent"

UI实现中view和layout的高度、宽度使用"wrap_content" and "match_parent",不使用固定值。

4.2.1.2 Use RelativeLayout

UI实现中layout尽量使用RelativeLayout,这样可以控制相对位置,还能减少布局的层级。

4.2.1.3 Use Size Qualifiers

距离使用dp和字体使用sp作为单位,不使用px。

4.2.1.4 Use the Smallest-width Qualifier

使用Smallest-width Qualifier,这个是Android3.2开始支持的,以适配平板。

res/layout-sw600dp/main.xml

4.2.1.5 Use Layout Aliases

使用Layout的别名,以适配不同尺寸的屏幕。

4.2.1.6 Use Orientation Qualifiers

使用屏幕方向属性,以支持横屏、竖屏。

4.2.1.7 Use Nine-patch Bitmaps

使用.9图片,.9图片能很好地支持横向、竖向拉伸。

4.2.2支持不同屏幕密度

见4.1.2.2 Create Different Bitmaps

4.2.3创建自适应界面

这里主要是运行时检测,什么是运行时检测呢,就是在java代码中判断需要的view是否找到(是否为空),例如下面的代码。

01.public class NewsReaderActivity extends FragmentActivity {

02.    boolean mIsDualPane;

03.

04.    @Override

05.    public void onCreate(Bundle savedInstanceState) {

06.        super.onCreate(savedInstanceState);

07.        setContentView(R.layout.main_layout);

08.

09.        View articleView = findViewById(R.id.article);

10.        mIsDualPane = articleView != null &&

11.                        articleView.getVisibility() == View.VISIBLE;

12.    }

13.}

Android应用如何支持屏幕多尺寸多分辨率问题基本就这些,更多经验需要从实践中总结。

后记:很久的时候和一位小伙伴讨论过应用适配的问题,说好了要总结出来的,现在权当实现诺言,写的有些凌乱,有读不通的通信请留言。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值