zoukankan      html  css  js  c++  java
  • android开发之国际化

    国际化,听起来高大上,做起来很简单。
    我们来实现一个简单的效果,让应用根据系统的语言来做不同的显示,假如android系统默认是英语,应用就以英文的形式显示,如果android系统默认是中文,则应用就显示中文。
    新建一个工程,名字叫做I18N,要做国际化,字符串的显示一定要按android规定的来,就是要显示的文字都定义在string里,一般情况下,新建的项目中会有一个values文件夹,values文件夹中有一个strings.xml文件,所有的字符串都放在这里,如果我们要实现国际化,就要新建一个文件夹,叫做vaules-zh(专放中文),vaules中放的东西和values-zh中放的文件一致,只不过显示的语言不同。

    这是values-zh中的strings.xml文件的内容(应用使用中文简体显示):

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">国际化</string>
        <string name="hello_world">你好,世界!</string>
        <string name="action_settings">设置</string>
    
    </resources>

    这是values中的strings.xml文件的内容:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">I18N</string>
        <string name="hello_world">Hello world!</string>
        <string name="action_settings">Settings</string>
    
    </resources>
    

    这是values-zh-rTW中的strings.xml文件的内容(应用使用繁体显示):

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">國際化</string>
        <string name="hello_world">你好,世界,你好,中國</string>
        <string name="action_settings">設置</string>
    
    </resources>
    

    项目布局文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.i18n.MainActivity" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
        <ImageView 
            android:id="@+id/im"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </LinearLayout>

    textview引用了helloworld,当系统语言为英文时,应用就是显示英文,当系统语言为中文时,应用就会显示中文。

    这是显示内容的国际化,图片也可以实现国际化。
    实现方式与实现文字国际化的方式相似,在res文件夹中新建图片文件夹,drawable-zh,drawable-zh-rTW,图片放进去就行了。

    Java代码:

    public class MainActivity extends Activity {
    
        private ImageView im;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            im = (ImageView) this.findViewById(R.id.im);
            im.setImageResource(R.drawable.flag);
        }
    }

    java中只需要设置一张图片就行了,因为drawable,drawable-zh,drawable-zh-rTW中存放的图片都是叫做flag,系统会根据具体语言环境选择相应的图片,效果如下:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    本项目完整代码下载

  • 相关阅读:
    20199131-2020-3-18 《网络攻防实践》第3周作业
    20199131-第2次作业-网络攻防实践
    20199131-第1次作业-网络攻防概述
    20199131《网络攻防实践》假期作业
    学习《深入理解计算机系统(第三版)》第二章总结
    学习《构建之法(第三版)》第一章总结
    关于宏的使用和Vim及其插件安装的学习总结
    细读《从问题到程序(第二版)》第一章学习总结
    细读《深入理解计算机系统(第三版)》第一章学习总结
    可信计算
  • 原文地址:https://www.cnblogs.com/lenve/p/4517977.html
Copyright © 2011-2022 走看看