Andriod UI 布局、样式、国际化练习。

实验内容:制作一个手机页面,运行效果图为:

  

一、准备素材。将准备好的八个图标复制到res/drawable文件夹下。

二、案例实现。

 1.抽取样式。在编写布局文件时,各个控件之间的外边距和宽高等属性值都是相同的的,为了代码简洁,可以将相同代码抽取为样式单独放在一个styles.xml文件中,一起进行调用。styles.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_parent</item>

         <item name="android:layout_height">wrap_content</item>

     </style>

     <style name="tv_style">

         <item name="android:layout_width">145dp</item>

         <item name="android:layout_height">90dp</item>

         <item name="android:gravity">center</item>

        <item name="android:paddingTop">8dp</item>

         <item name="android:paddingBottom">8dp</item>

         <item name="android:drawablePadding">5dp</item>

         <item name="android:background">@android:color/white</item>

     </style>

</resources>

2.为实现程序国际化创建中文、英文两种语言的 strings.xml 文件,分别放在res目录下新建的 values-zh-rCN values-en-rUS 文件夹下。两个strings.xml文件如下:

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

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

<resources>

     <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>

</resources>

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

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

<resources>

     <string name="app_name">phoneInfo</string>

     <string name="menu_settings">Settings</string>

     <string name="hello_world">Hello world!</string>

     <string name="_cloud">Cloud</string>

      <string name="_bluetooth">Bluetooth</string>

      <string name="_gesture">Gesture</string>

      <string name="_gps">Gps</string>

     <string name="_system_info">SystemInfo</string>

     <string name="_internet">Internet</string>

     <string name="_language">Language</string>

     <string name="_set_notifycation">Notifycation</string>

</resources>

3.创建“手机信息页面”程序,①首先确定其布局,总体上可以用一个垂直排布的线性布局,而每一行又由两个元素组成,这儿用相对布局比较方便实现,一共有四行,所以在最外层的线性布局内要建4个线性布局,并指定4个布局多要实现的样式;②在4个线性子布局中添加相应的TextView,并指定相应样式,显示文本,在指定位置添加相应图片,分别调节maginleft或maginright的值,给组件之间腾出间隙,并且通过调节layoutt_alignParenLeft或layoutt_alignParenRight将每行的组件的相对位置调节好,一左一右。实现代码为:

<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:background="@android:color/darker_gray"

     android:orientation="vertical"

     tools:context=".MainActivity" >

     <RelativeLayout style="@style/h_wrap_content"

         android:layout_marginTop="10dp">

         <TextView

             style="@style/tv_style"

             android:layout_alignParentLeft="true"

             android:layout_marginLeft="10dp"

             android:drawableTop="@drawable/clound"

             android:text="@string/_cloud" />

         <TextView

             style="@style/tv_style"

             android:layout_alignParentRight="true"

             android:layout_marginRight="10dp"

             android:drawableTop="@drawable/bluetooth"

             android:text="@string/_bluetooth" />

     </RelativeLayout>

     <RelativeLayout style="@style/h_wrap_content"

         android:layout_marginTop="10dp">

         <TextView

             style="@style/tv_style"

             android:layout_alignParentLeft="true"

             android:layout_marginLeft="10dp"

             android:drawableTop="@drawable/gesture"

             android:text="@string/_gesture" />

         <TextView

             style="@style/tv_style"

             android:layout_alignParentRight="true"

             android:layout_marginRight="10dp"

             android:drawableTop="@drawable/gps"

             android:text="@string/_gps" />

     </RelativeLayout>

     <RelativeLayout style="@style/h_wrap_content"

         android:layout_marginTop="10dp">

         <TextView

             style="@style/tv_style"

             android:layout_alignParentLeft="true"

             android:layout_marginLeft="10dp"

             android:drawableTop="@drawable/info"

             android:text="@string/_system_info" />

         <TextView

             style="@style/tv_style"

             android:layout_alignParentRight="true"

             android:layout_marginRight="10dp"

             android:drawableTop="@drawable/internet"

             android:text="@string/_internet" />

     </RelativeLayout>

     <RelativeLayout style="@style/h_wrap_content"

         android:layout_marginTop="10dp">

         <TextView

             style="@style/tv_style"

             android:layout_alignParentLeft="true"

             android:layout_marginLeft="10dp"

             android:drawableTop="@drawable/language"

             android:text="@string/_language" />

         <TextView

             style="@style/tv_style"

             android:layout_alignParentRight="true"

             android:layout_marginRight="10dp"

             android:drawableTop="@drawable/notifycation"

             android:text="@string/_set_notifycation" />

     </RelativeLayout>

</LinearLayout>

4.最后,MainActivity编写与界面交互的代码,实现界面与用户的交互,就大功告成了。

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值