<?xml version="1.0" encoding="utf-8"?> My Application Hello World!

西班牙语,/values-es/strings.xml:

<?xml version="1.0" encoding="utf-8"?> Mi Aplicación Hola Mundo!

法语,/values-fr/strings.xml:

<?xml version="1.0" encoding="utf-8"?> Mon Application Bonjour le monde !

然后,我们就可以在代码中使用R.string.<string_name>语法来引用字符串资源就行了。

###二、屏幕适配
Android是用尺寸和分辨率这两种常规属性对设备加以分类。在我们开发项目中应该提供一些可选资源,针对尺寸和分别率来优化我们的界面外观。

**·**Layout适配有4种尺寸 :小(small),普通(normal),大(large),超大(xLarge)
**·**Bitmap适配有4种分辨率:低Low精度(ldpi), 中Middle精度(mdpi),高High精度(hdpi), 超高精度(xhdpi)

首先,说一说这个分别率的问题。

在项目开发的过程中有一个重要的合作是与UI设计师的图片大小分别率的沟通。例如,UI设计师实现步骤:①在coreldraw或者Sketch中制作好“矢量图标“ ;②保存输出为“PNG位图图片”,单位是px;③设置图标的内外边距,此时的边距单位是px;当开发者拿到图后,会遇到这样一个问题:内外边距是由px为单位的距离,但是在实际开发中“dp”做为单位的更加常见,所以就会涉及到“px”“dp”互转的问题。

对bitmap根据屏幕的分别率找到资源目录下的密度文件夹。参考下表:

![image.png](https://upload-images.jianshu.io/upload_

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

images/15233854-478797f31f6ff649.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

比如,计算方式给xhdpi(2倍图,超高精度)级别的设备生成了一张200200px的图像,那么应该为hdpi生成150150px,为mdpi生成100100px, 为ldpi生成7575px的图片资源。然后,将这些文件放入相应的drawable资源目录中:

MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png

任何时候,当引用@drawable/awesomeimage时系统会根据屏幕的分辨率选择恰当的bitmap。

另外,解释一下为什么上面表格有两行标位红色,原因是2倍图和3倍图是主流占比,在友盟统计中显示如下:

其次,说一说这个XML布局文件的适配。

实际开发时,我们在xml布局里设置控件的宽高属性都是以“dp”做为单位,甚至还会遇到横竖屏页面适配情况。前面提到了Layout适配尺寸有4种:小(small),普通(normal),大(large),超大(xLarge)

所以,我们可以在资源文件Layout根目录创建不同尺寸的目录,系统会根据app所运行的设备屏幕尺寸,在与之对应的layout目录中加载layout。更多详见Providing Resources。例如:

res/
layout/
main.xml
layout-large/
main.xml

Xml文件的名字相同。为不同屏幕做不同UI处理,内容不同。如平常一样在APP中引用:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

*记得在AndroidManifest.xml文件中设置多分辨率支持:

最后,说一说横竖屏布局兼容的问题。

先看下面一个例子:这一个工程中适配横向屏幕的layout-land

MyProject/
res/
layout/
main.xml
layout-land/
main.xml

默认的layout/main.xml文件用作竖屏的layout。

如果想给横屏提供适配于大屏幕,那么则需要使用large和land修饰符。

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

其他屏幕适配方式:

###(1)页面控件属性常用适配方法
1.尽量使用线性布局(LinearLayout)和相对布局(RelateLayout),尽量不使用绝对布局(AbsoluteLayout)和帧布局(FrameLayout)。
2.尽量使用wrap_content、mach_parent让view自适应或最大化,尽量不要写宽高的值。
3.使用线下布局的百分比weight权重时,要把宽度写成“0dp“,如果写成wrap_coent会使布局效果不佳等问题。
4.尽量使用android的Shape自定义view背景,这样会随之自适应。
5.ImageView的ScaleType有五种方式(center,centerCrop,centerInside,fieCenter,fieXY),尽量使用fieCenter按比例扩大至view宽度,能取得较好适配和显示效果。
6.获取屏幕分辨率信息,进行动态适配:DisplayMetrics metrics =newDisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(metrics);
###(2)手机横竖屏切换兼容适配        
我们会把屏幕设置成单一的横屏或竖屏,设置的方法是去AndroidMaifest.xml中把activity中的android:screenOrintation设置成landscape或者portrait,这种单一的屏幕模式。如果设置成"sensor",就由物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换的时候需要注意布 局问题和重新载入问题。

·布局问题:
在res目录先建立layout-land和layout-port目录相应的xml文件名字相同,然后在两个文件夹下创建相同名字的两套xml,模拟器就会根据不同 的屏幕来进行自动寻找。也可以只在layout中创建xml,通过this.getResources().getConfiguration().orientation来判断当前是横屏还是竖 屏,然后在oncreate方法中加载不同的布局
**·重新载入问题:**如果不需要重新载入(重新走一遍activity的生命周期),则在AndroidManifest.xml中activity标签下设置android: configChanges=“orientation|keybordHidden”,这样的话就不会重复调用activity的生命周期方法,切换时只会调用 onConfigChanged(Configuration newconfig)。如果需要重新载入,则不需要添加属性

###三、适配不同系统版本

新的Android版本会为我们的app提供更棒的API,但我们的app仍应支持旧版本的Android,直到更多的设备升级到新版本为止。

首先,在项目清单文件中指定最小和目标API级别。具体来说,元素中的minSdkVersion和targetSdkVersion 属性,标明在设计和测试app时,最低兼容API的级别和最高适用的API级别(这个最高的级别是需要通过我们的测试的)。例如:

<manifest xmlns:android=“http://schemas.android.com/apk/res/android” … >

roid=“http://schemas.android.com/apk/res/android” … >

Android-适配各国语言、屏幕尺寸、系统版本及常见适配方法总结相关推荐

  1. 查看linux系统版本centos,CentOS下查看系统版本的4种方法

    Linux有很多的发行版,不同的版本会有一些细微区别,所以经常需要查看服务器系统的版本号. 下面来看下CentOS下如何查看CentOS版本. 方法1:cat /etc/issue 执行命令:[www ...

  2. html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)

    原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/ 仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感 ...

  3. android 从服务端获取的图片怎么适配不同分屏幕的手机,移动端的适配|切图|标注...

    年前最后一个工作日,完成这篇干货- 这篇文章的目的是想从更深的原理层去找到一些设计规范的原因,比如为什么要选用@2x的750*1334做基础设计稿? 开发拿到设计基础稿是如何操作适配的? 基础稿是如何 ...

  4. android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...

    我需要能够知道屏幕的确切大小,不包括软件导航栏.我正在使用andengine来制作游戏. 我们希望全力支持新的Nexus系列(4,7和10) 根据许多人指出的this page,软件导航栏的大小应为4 ...

  5. 魅蓝x android,魅蓝X的屏幕尺寸是多少?分辨率是多少?

    魅蓝X的屏幕尺寸是多少 魅蓝X的屏幕尺寸是5.5英寸. 针对魅蓝X的屏幕尺寸是多少的问题,魅蓝X的指纹识别模块有着不错的识别速度和识别正确率,即使在湿手的情况下也能快速解锁手机屏幕,另外,指纹模块还支 ...

  6. Android 10 (Android Q)中的屏幕刷新率(display refresh rate)切换方法和策略

           本文禁止转载,如有需求,请联系作者. 1. 屏幕刷新率和应用的显示帧率 首先请区分好屏幕刷新率(Panel Refresh Rate)和应用的帧率(APP Frame Rate)两个概念 ...

  7. 计算机屏幕面积大约多少,电脑屏幕尺寸怎么计算?-常见电脑屏幕尺寸的计算方式 - 河东软件园...

    电脑屏幕尺寸如何计算?电脑屏幕尺寸的计算方式!现如今电脑屏幕尺寸有多种多样,我们通过对笔记本与台式显示器的尺寸进行对比就会发现明显的区别,市面上常见的电脑屏幕尺寸包含19.21.21.5.22.23. ...

  8. u8860 android 2.3,华为u8860安卓系统版本

    楼主你好,华为u8860其实就是前段时间很热的华为荣耀,只不过官方型号叫u8860而已,系统方面华为u8860采用了android2.3.5的操作系统,加上华为自家的ui界面,美化的非常漂亮,个人感觉 ...

  9. android+siri人工智能语言软件,苹果系统新增翻译功能,网友惊呼人工智能太强大...

    IOS14系统的更新中有一项非常令人惊喜的功能,那就是苹果自带的系统翻译应用. 这个全新的苹果翻译APP可以支出一共十一种语言的互相翻译,在此次更新之前,苹果用户如果想要翻译某个句子单词,需要单独下载 ...

最新文章

  1. 中国台湾芯片设计商 Realtek 的WiFi SDK漏洞影响数百万IOT设备
  2. js超出文字个数展示省略号
  3. GDI对象和CDC的使用方法(防止资源泄漏)
  4. C语言 数组长度计算 - C语言零基础入门教程
  5. java8-02-Stream-API
  6. Lethean结点搭建
  7. 强化学习DQN算法实战之CartPole
  8. Python菜鸟入门:day08函数概念
  9. Java语言中String累的总结
  10. arcgis中将地理坐标转换为投影坐标 / 经纬度坐标转换
  11. Cimage类的介绍及使用
  12. 汽车HUD抬头显示全产业链深度解析报告
  13. VS2015基础开发流程
  14. priya-dwivedi关于人脸情绪识别
  15. Modulo Summation atcoder abc103
  16. 网站提示DNS_PROBE_FINISHED_NXDOMAIN错误如何修复
  17. 各星座导演与他们的电影风格【转】]
  18. 清华应届程序员同时被5家公司录取,晒出工资,网友:羡慕
  19. 豆瓣评分高于8.8分的计算机书籍
  20. 超好用的ACM刷题网站,你用过几个?

热门文章

  1. 从WAVE SUMMIT+2021,寻找新一代AI人不可或缺的“凝视”
  2. 区块链论语:付币看真相是一个应用
  3. PB中的timer事件
  4. 三甲医院就医流程与HIS系统
  5. 基于态势感知的智能机器透明度与人-智能机团队效能研究
  6. 阿德莱德大学计算机专业学费,阿德莱德大学本科及研究生学费是多少(含各专业学费)?...
  7. Pytorch RNN 实现新闻数据分类
  8. java html pdf 中文_java html 转pdf 中文可显示
  9. 京东商城商品分类列表页面
  10. influx的常规操作