一、适配不同国家语言

智能手机系统设置里各国语言的选项,然后我们项目里可以通过资源目录实现适配语言。我们知道工程的根目录有个res/的目录,res/下有一个资源类型的目录,其中有个values/strings.xml默认文件,

在res/目录下创建多个values/strings.xml文件,但是values目录需要改名,例如:

res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml

其中,英语,/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">My Application</string>
<string name="hello_world">Hello World!</string>
</resources>

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mi Aplicación</string>
<string name="hello_world">Hola Mundo!</string>
</resources>

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">Mon Application</string>
<string name="hello_world">Bonjour le monde !</string>
</resources>

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

不同屏幕适配要点

1,使用wrap_content、match_parent、weight 
2,使用相对布局,禁用绝对布局 
3,使用自动拉伸位图 .9格式(nine-patch图片) 
4,使用dp来设置控件间距,使用sp来设置文字大小 
5,提供备用的位图, xhdpi,hdpi,ldp 
6,使用Size限定符,在普通layout文件夹中写一个布局文件,在到layout-large文件夹中写另一个布局文件,然后根据屏幕大小不同来加载不同的布局文件。 
7,使用Smallest-width限定符,比如:layout-sw600dp 就会在屏幕是600dp以上就会加载这个布局文件。

前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机。因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法。

先介绍一下所走的弯路,由于android的布局文件存放在res的layout中,可以根据不同的手机分辨率指定特定的layou参数,如图所示:

根据不同的手机设定多个分辨率layout参数布局文件。因此再程序加载的过程中,会把运行该分辨率下的布局文件。 这样开发的问题是回到至布局文件很多,很乱。不方便管理。一旦修改需要修改很多布局文件。

通过分析反编译参看国内主流应用(QQ,京东,微信等)的布局文件进行学习,发现布局文件基本是一套的,把布局文件中需要设定的数值文件values设置成多套。合理的布局应该是这样

可以看出布局layout是一套的,但是需要资源的时候drawable可以是多套的,根据分辨率的不同做特别的适配。而对应的values一定是多套的。而且values的适配已经从低分辨率800x432一直到高分辨率1280x752都有对应的数据。而且会根据密度进行单独的适配hdpi,xhdip。这样对于代码是比较容易维护的。

因此根据所获取的信息,本人把项目进行了重构,下面是重构后的布局文件,

短小精干,由于用到的图片资源不多,因此就用一套drawable,用一套布局layout,把对应的value使用多套。在不同手机上运行过。基本上都能够满足用户体验。把数据完整的显示出来,效果也不失真。

dimen.xml在values文件夹下面

<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="btn_width">16dp</dimen>
<dimen name="btn_height">16dp</dimen>
</resources>

布局中的使用:

<Button
android:text="@string/test_dimen1"
android:id="@+id/Button01"
android:layout_width="@dimen/btn_width"
android:layout_height="@dimen/btn_height"/>

文件夹含义:

values-v11   -------API 11+代表android 3.0 +,意思是在API11设备上,该目录下的dimens.xml代替res/values/dimens.xml

values-480x320、values-800x480等 ------------意思是在不同分辨率下,该目录下的dimens.xml代替res/values/dimens.xml

API对应版本号

拿京东的看看,定义了不少啊

Android 多分辨率与不同语言适配的更多相关文章

  1. Android多分辨率适配

    前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...

  2. Android多分辨率适配经验总结

      Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...

  3. 【转】android多分辨率适配

    前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...

  4. android 多语言适配

    建好android项目后,默认的是有个values文件,该文件下面默认的有strings.xml. 做多语言适配的时候,就需要在创建好的项目中,右键单击res文件夹,选择创建新的xml文件. 然后点击 ...

  5. android语言适配

    虽然我们现在做的app基本只在国内使用,所以只需要中文,但是我们要把眼光放长远一点,以后我们的APP发展到了国外呢,所以我们就要做语言适配了   很简单 在res目录下,右键  New Resourc ...

  6. Android中,图片分辨率适配总结规则drawable drawable-mdpi drawable-hdpi drawable-nodpi drawable-ldpi

    一直关于android多分辨率适配有些疑惑,从网上找到一些资料并通过测试验证,参考链接:http://blog.csdn.net/lamp_zy/article/details/7686477 现记录 ...

  7. Android 应用内多语言切换

    最近公司的 App 里需要用到多语言切换,简单来说,就是如果用户没有选择语言选项时,App 默认跟随系统语言,如果用户在 App 内进行了语言设置,那么就使用用户设置的语言.当然,你会发现,App 的 ...

  8. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  9. Android开发之各个语言

    Android开发之各个语言 1.进行源码开发遇到一个最基础的问题就是各个语言下的字串翻译,所以我们必须得清楚res文件夹下各个资源文件夹 2.如图:

随机推荐

  1. 解决 webpack 打包文件体积过大

    webpack 把我们所有的文件都打包成一个 JS 文件,这样即使你是小项目,打包后的文件也会非常大.下面就来讲下如何从多个方面进行优化. 去除不必要的插件 刚开始用 webpack 的时候,开发环境 ...

  2. java多线程ExecutorService

    1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...

  3. linux系统使用grep命令提取文件的基名或者路径名

    效果等于~]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33 echo "/etc/sysconfig/network-scripts/ ...

  4. Dubbo 04 服务化最佳实现流程

    Dubbo 04 服务化最佳实践 分包 建议将服务接口.服务模型.服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分,这样做也符合分包原则:重用发布等价原则(REP),共同重用原 ...

  5. Dubble 01 架构模型&start project

    Dubbo 01 架构模型 传统架构 All in One 测试麻烦,微小修改 全都得重新测 单体架构也称之为单体系统或者是单体应用.就是一种把系统中所有的功能.模块耦合在一个应用中的架构方式.其优点 ...

  6. php多个数组组合算法 火车头免登录发布接口代码备忘

    火车头发布产品的时候,有颜色.尺码.性别等等产品属性,需要进行不重复的组合,变成不重复的数组 <?php function comb($a){ $a = array_filter($a); $o ...

  7. Spring JdbcTemplate + transactionTemplate 简单示例 (零配置)

    jdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTempla ...

  8. wx小程序知识点(五)

    五.双向绑定和 vue 的区别 ① vue 中实现双向绑定只需要修改 this.data var vm = new Vue({ el: '#example', data: { message: 'He ...

  9. 在github新建一个项目里需要哪些文件及作用

    1.README.md文件 关于项目的介绍和使用方法. 2.  .gitignore文件 上传项目时不需要传的文件,最常用的就是“node_modules/",如下: 详细的介绍可以去git ...

  10. DOM修改

    ㈠DOM标准 核心DOM:                                                                               HTML DOM ...