实验中运用到布局、样式和主题,以及国际化的内容。
运行结果:
步骤:
1、将图标复制到res/drawable下
注:如果要支持不同的图片的话,只需要在res目录下的drawable创建不同的文件夹,比如说,在中文环境下就建立drawable-zh-rCN,英文环境下就建立drawable-en-rUS。
2、在res/valuse下创建valuse-en-rUS和valuse-ch-rCN,一个支持英文环境下的文字,一个支持中文环境下的文字。然后在把valuse/strings.xml复制到这两个文件夹下。
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> 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="_theme">系统信息</string> <string name="_internet">网络</string> <string name="_language">语言设置</string> <string name="_notifycation">通知栏设置</string> </resources>3、 在values 文件下的 style.xml 文件中存放抽取出来的样式 <resources> <style name="AppBaseTheme" parent="android:Theme.Light"> </style> <style name="AppTheme" parent="AppBaseTheme"> </style> <!-- 宽 match——parent 高 wrap_content--> <style name="h_wrap_content"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> </style> <!-- 宽高都 match——parent --> <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> 注:样式和主题用于定义布局显示在界面上的风格。1、样式与主题的区别:
样式是作用于某一个组件的,作用范围是局部的,只能作用于单个的View,如EditText,TextView;主题是在整个<application>和<activity>中对它设置的,作用范围是全局的。
2、定义样式和主题的步骤如下:
(1)在res/valuse目录下建立一个样式文件style.xml(文件名可以自定义),添加一个<resources>
(2)在<resources>结点中添加一个<style>结点,并在该节点中为样式或主题定义一个唯一的名字
(3)在<style>结点中声明一个或多个<style>,每个<item>节点需要定义一个属性名,并在元素内部设置这个属性的值
4、创建 布局文件activity_mian.xml, 创建一个垂直的线性布局,并在线性布局中创建4 个相对布局 , 在相对布局中添加相应的 TextView<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>注:android:layout_alignParentBottom:"true" 是否显示在容器底部 align:对齐 Parent:容器
5、编写与界面交互的代码,需要在MainActivity中编写与用户交互的逻辑代码
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 注:使用设置的主题时需要把MainActivity的继承关系修改下,使用它的父类Activity。
当(R.layout.activity)中的actiivity出错时,就要找到布局文件名改过来。