程序员人生 网站导航

第三章 界面UI的基石―UI布局(5)

栏目:综合技术时间:2015-02-28 08:30:55

3.3 样式(Style)和主题(Theme)的使用

3.3.1样式(Style)的使用

不论是利用开发回是游戏开发,我们开发出来的产品,大部份的时候还是要让更多的人来使用的。因此,除功能上的完善以外,布局上的公道而美观也是我们需要斟酌的问题。Style和Theme的设计就是提升用户体验的关键之1。

Style和Theme都是为了改变样式,但是2者又略有区分:

1)Style是针对窗体元素级别的,改变指定控件或Layout的样式。

2Theme是针对窗体级别的,改变窗体样式。

它们的使用是非常灵活的,可以添加系统中所带组件的所有属性。

下面,我们分别来看看它们是如何使用的。

首先,我们在values目录下创建styles.xml文件,打开以后添加上1个样式:

<?xml version="1.0" encoding="utf⑻"?>

<resources>

<style name="TextView">

<item name="android:textSize">18sp</item>

<item name="android:textColor">#fff</item>

<item name="android:shadowColor">#FF5151</item>

<item name="android:shadowRadius">3.0</item>

</style>

<style name="TextView_Style2">

        <item name="android:textSize">24sp</item>

        <item name="android:textColor">#FF60AF</item>

        <item name="android:shadowColor">#E6CAFF</item>

        <item name="android:shadowRadius">3.0</item>

</style>

</resources>

 

其中,android:shadowColor是指定文本阴影的色彩,android:shadowRadius是设置阴影的半径。设置为0.1就变成字体的色彩了,1般设置为3.0的效果比较好。

接着,我们在布局文件中添加两个文本框,分别给他们用上这两个样式:

<?xml version="1.0" encoding="utf⑻"?>

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="match_parent"

  android:layout_height="match_parent">

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        style="@style/TextView_Style1"

        android:text="我是样式1"/>

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        style="@style/TextView_Style2"

        android:text="我是样式2"/>

</LinearLayout>

 

效果图如图3⑴0所示。


图3⑴0Style样式的使用

 

可以看到,这两个文本框利用了不同的样式,所以显示了不同的效果。

3.3.2主题(Theme)的使用

说完了style,下面就说说Theme。Theme跟style差不多,从代码的角度来讲是1样的,只是概念上的不同。Theme是利用在Application或Activity里面的,而Style是利用在某1个View里面的。我们还是以1个例子来看看Theme的使用。
我们首先在values目录下创建themes.xml文件,(固然,我们也能够在之前的styles.xml文件中直接添加)打开以后添加上1个样式:

<?xml version="1.0" encoding="utf⑻"?>

<resources>

<style parent="@android:style/Theme" name="MyTheme">

<item name="android:windowNoTitle">true</item>

<item name="android:windowBackground">@drawable/ball</item>

</style>

</resources>
 
在这里,我们写了1个继承自系统默许的Theme的主题,里面有2个属性,第1个属性是设置无标题,第2个属性是设置背景图。然后,我们在AndroidManifest.xml文件中利用该主题:
 

<?xml version="1.0" encoding="utf⑻"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="com.chapter2"

      android:versionCode="1"

      android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name"

                 android:theme="@style/MyTheme">

        <activity android:name=".Chapter2Activity"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

</application>

</manifest>
 
运行的效果如图3⑴1所示。
 

图3⑴1Theme主题的使用

 

可以看到,我们利用的主题已生效了。标题栏被设置为了不可见,同时也设置了背景图片。
我们可以将那些展现效果相同的视图设置为相同的样式或主题,提高我们开发的效力和代码的可读性。
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐