不论是利用开发回是游戏开发,我们开发出来的产品,大部份的时候还是要让更多的人来使用的。因此,除功能上的完善以外,布局上的公道而美观也是我们需要斟酌的问题。Style和Theme的设计就是提升用户体验的关键之1。
Style和Theme都是为了改变样式,但是2者又略有区分:
1)Style是针对窗体元素级别的,改变指定控件或Layout的样式。
2)Theme是是针对窗体级别的,改变窗体样式。
它们的使用是非常灵活的,可以添加系统中所带组件的所有属性。
下面,我们分别来看看它们是如何使用的。
首先,我们在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样式的使用
可以看到,这两个文本框利用了不同的样式,所以显示了不同的效果。
说完了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主题的使用
可以看到,我们利用的主题已生效了。标题栏被设置为了不可见,同时也设置了背景图片。
我们可以将那些展现效果相同的视图设置为相同的样式或主题,提高我们开发的效力和代码的可读性。