目录

  • 1 第一周 android简介
    • 1.1 第一课 Android基础入门1
    • 1.2 第二课 Android基础入门2
    • 1.3 第三课 Android UI开发介绍
  • 2 第二周 android布局
    • 2.1 第一课 Android 布局文件介绍1
    • 2.2 第二课 Android 布局文件介绍2
    • 2.3 第三课 Android 布局文件介绍3
  • 3 第三周 Android UI组件开发
    • 3.1 第一课 Button和ImageButton
    • 3.2 第二课 TextView和EditText
    • 3.3 第三课 RadioButton和CheckBox
  • 4 第四周 Android UI组件开发
    • 4.1 第一课 Spinner和ListView
    • 4.2 第二课 应用案例-手机信息页面
    • 4.3 第三课 Android生命周期
  • 5 第五周 Android组件通信
    • 5.1 第一课 Intent的介绍
    • 5.2 第二课 Intent实现各种系统功能
    • 5.3 第三课 应用案例-手机注册页面
  • 6 第六周 数据存储
    • 6.1 第一课 应用案例-新建联系人
    • 6.2 第二课 数据存储-简单文件存储
    • 6.3 第三课 SharedPreferences存储
  • 7 第七周 数据存储
    • 7.1 第一课 xml文件存储
    • 7.2 第二课 应用案例-植物百科
    • 7.3 第三课  ListView 组件高级使用
  • 8 第八周 SQLite数据库
    • 8.1 第一课 应用案例-应用列表
    • 8.2 第二课 使用SQLite数据库存储(创建数据库和表)
    • 8.3 第三课 使用SQLite数据库存储(对表数据操作)
  • 9 第九周 项目实战-商品购物车处理
    • 9.1 第一课 使用SQLite数据库存储(对表数据查询)
    • 9.2 第二课 商品购物车处理(布局)
    • 9.3 第三课 商品购物车处理(数据处理)
  • 10 第十周 内容提供者及广播
    • 10.1 第一课 内容提供者的使用
    • 10.2 第二课 广播概念以及如何使用
    • 10.3 第三课 自定义广播
  • 11 第十一周 广播和服务
    • 11.1 第一课 应用案例-电池电量
    • 11.2 第二课 应用案例-通话记录
    • 11.3 第三课 服务简介
  • 12 第十二周 服务应用
    • 12.1 第一课 应用案例—音乐播放器
    • 12.2 第二课 应用案例—地震监测
    • 12.3 第三课 获得手机SIM卡信息
  • 13 第十三周 网络编程
    • 13.1 第一课 网络编程入门
    • 13.2 第二课 使用HttpClient访问网络
    • 13.3 第三课 webview组件
  • 14 第十四周 网络编程应用案例
    • 14.1 第一课 消息机制简介
    • 14.2 第二课 应用案例-应用升级
    • 14.3 第三课 应用案例-应用升级
第二课 应用案例-手机信息页面

一、案例描述

1、考核知识点

01002002:相对布局

01002003:线性布局

01002009:样式和主题

01002010:国际化

2、练习目标

        掌握相对布局、线性布局的使用

        掌握样式的使用

        掌握如何对程序进行国际化

3、需求分析

本书第2章讲解了Android UI开发,其中包括了相对布局、线性布局、样式和主题、国际化等知识点。在实际开发中,这些知识点的使用频率比较高,因此接下来将通过一个综合型案例——手机信息页来演示这些知识点的综合应用。

4、设计思路(实现原理)

1)将准备好的八个图标复制到res/drawable文件夹下

    2)创建一个垂直的线性布局,并在线性布局中创建4个相对布局 

    3)在相对布局中添加相应的TextView

       4)在values文件下的style.xml文件中存放抽取出来的样式

    5)创建values-zh-rCNvalues-en-rUS文件夹,并在文件夹中创建strings.xml文件

二、案例实现

1)创建“手机信息页面”程序

创建一个名为“手机信息页面”的程序,该程序用于展示手机设置页面的信息。程序界面对应布局文件activity_mian.xml如下所示:

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


2)抽取样式

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

<resources>

    <stylename="AppBaseTheme" parent="android:Theme.Light">

   </style>

    <stylename="AppTheme" parent="AppBaseTheme">

   </style>

    <!-- 宽 match——parent 高  wrap_content-->

    <stylename="h_wrap_content">

       <itemname="android:layout_width">match_parent</item>

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

   </style>

     <!-- 宽高都 match——parent -->

    <stylename="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>

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

   </style>

</resources>   


3)创建values-zh-rCNvalues-en-rUS文件夹

 res目录下创建values-zh-rCNvalues-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>

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

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

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

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

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

</resources>


4)编写与界面交互的代码

接下来需要在MainActivity中编写与用户交互的逻辑代码,MainActivity对应的代码如下所示:

public class MainActivity extends Activity {

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}



三、案例总结

1、注意values文件夹的命名规则,详情请参见教材。

2、案例使用到了TextViewandroid:drawableTop=""属性,该属性是用于指定文字上方的图片。