利用线性布局和相对布局实现一个简单的页面并且使应用支持国际化语言

设计思路

  • 将准备好的八个图标复制到res/drawable文件夹下
  • 创建一个垂直的线性布局,并在线性布局中创建4个相对布局
  • 在相对布局中添加相应的TextView
  • 在values文件下的style.xml文件中存放抽取出来的样式
  • 创建values-zh-rCN、values-en-rUS文件夹,并在文件夹中创建strings.xml文

一.布局文件:

布局文件activity_mian.xml如下所示:

"1.0" encoding="utf-8"?>
"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:background="@android:color/darker_gray"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    "@style/h_wrap_content"
        android:layout_marginTop="35dp">
        "@style/tv_style"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="30dp"
            android:drawableTop="@drawable/clound"
            android:text="@string/_cloud" />
        "@style/tv_style"
            android:layout_alignParentRight="true"
            android:layout_marginRight="30dp"
            android:drawableTop="@drawable/bluetooth"
            android:text="@string/_bluetooth" />
    </RelativeLayout>
    "
        android:layout_marginTop="10dp">
        @style/tv_style"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="30dp"
            android:drawableTop="@drawable/gesture"
            android:text="@string/_gesture" />
        @style/tv_style"
            android:layout_alignParentRight="true"
            android:layout_marginRight="30dp"
            android:drawableTop="@drawable/gps"
            android:text="@string/_gps" />
    
    @style/h_wrap_content"
        android:layout_marginTop="10dp">
        @style/tv_style"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="30dp"
            android:drawableTop="@drawable/info"
            android:text="@string/_system_info" />
        @style/tv_style"
            android:layout_alignParentRight="true"
            android:layout_marginRight="30dp"
            android:drawableTop="@drawable/internet"
            android:text="@string/_internet" />
    
    @style/h_wrap_content"
        android:layout_marginTop="10dp">
        @style/tv_style"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="30dp"
            android:drawableTop="@drawable/language"
            android:text="@string/_language" />
        @style/tv_style"
            android:layout_alignParentRight="true"
            android:layout_marginRight="30dp"
            android:drawableTop="@drawable/notifycation"
            android:text="@string/_set_notifycation" />
    

二.样式抽取:

由于编写布局文件时,相同控件之间的外边距和宽高都是固定的。因此会产生大量重复的布局代码,为了代码简洁和重复使用可以将相同代码抽取为样式单独放在一个style.xml文件中

布局文件style.xml如下所示:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    style>
    <style name="AppTheme" parent="AppBaseTheme">
    style>
    
    <style name="h_wrap_content">
        <item name="android:layout_width">match_parentitem>
        <item name="android:layout_height">wrap_contentitem>
    style>
     
    <style name="tv_style">
        <item name="android:layout_width">145dpitem>
        <item name="android:layout_height">90dpitem>
        <item name="android:gravity">centeritem>
        <item name="android:paddingTop">8dpitem>
        <item name="android:paddingBottom">8dpitem>
        <item name="android:drawablePadding">5dpitem>
        <item name="android:background">@android:color/white
    style>
resources>    

三.国际化语言文件:

android 应用支持国际化语言的配置。在android 工程中Project视图下的res文件夹下 创建values-国家代码,例如values-en-rUS,values-zh-rCN这样就可以和android 系统中设置的语言 进行匹配, 如没有匹配上, 则会默认使用values文件夹中的资源。

1.values-zh-rCN文件夹下的strings.xml:

version="1.0" encoding="utf-8"?>

    <string name="app_name">手机信息页面string>
    <string name="menu_settings">设置string>
    <string name="hello_world">你好,世界!string>
    <string name="_cloud">云通信string>
    <string name="_bluetooth">蓝牙string>
    <string name="_gesture">自定义手势string>
    <string name="_gps">定位string>
    <string name="_system_info">系统信息string>
    <string name="_internet">网络string>
    <string name="_language">语言设置string>
    <string name="_set_notifycation">通知栏设置string>

2.values-en-rUS文件夹下的strings.xml:

version="1.0" encoding="utf-8"?>

    <string name="app_name">phoneInfostring>
    <string name="menu_settings">Settingsstring>
    <string name="hello_world">Hello world!string>
    <string name="_cloud">Cloudstring>
    <string name="_bluetooth">Bluetoothstring>
    <string name="_gesture">Gesturestring>
    <string name="_gps">Gpsstring>
    <string name="_system_info">SystemInfostring>
    <string name="_internet">Internetstring>
    <string name="_language">Languagestring>
    <string name="_set_notifycation">Notifycationstring>

三.测试:

通过上面的简单几步我们就完成了对页面的布局以及样式的抽取还有国际语言(目前仅支持中英文)的支持。下面我们就来测试一下吧。

利用线性布局和相对布局实现一个简单的页面并且使应用支持国际化语言_第1张图片

你可能感兴趣的:(布局,国际化)