本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

越来越多互联网企业都在Android平台上部署其客户端,为了提升用户体验,这些客户端都做得布局合理而且美观.......Android的Style设计就是提升用户体验的关键之一。Android上的Style分为了两个方面:

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

Android系统的themes.xml和style.xml(位于/base/core/res/res/values/)包含了很多系统定义好的style,建议在里面挑个合适的,然后再继承修改。以下属性是在Themes中比较常见的,源自Android系统本身的themes.xml:

[xhtml] view plain copy print ?
  1. <!--Windowattributes-->
  2. <itemname="windowBackground">@android:drawable/screen_background_dark</item>
  3. <itemname="windowFrame">@null</item>
  4. <itemname="windowNoTitle">false</item>
  5. <itemname="windowFullscreen">false</item>
  6. <itemname="windowIsFloating">false</item>
  7. <itemname="windowContentOverlay">@android:drawable/title_bar_shadow</item>
  8. <itemname="windowTitleStyle">@android:style/WindowTitle</item>
  9. <itemname="windowTitleSize">25dip</item>
  10. <itemname="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item>
  11. <itemname="android:windowAnimationStyle">@android:style/Animation.Activity</item>
<!-- Window attributes --> <item name="windowBackground">@android:drawable/screen_background_dark</item> <item name="windowFrame">@null</item> <item name="windowNoTitle">false</item> <item name="windowFullscreen">false</item> <item name="windowIsFloating">false</item> <item name="windowContentOverlay">@android:drawable/title_bar_shadow</item> <item name="windowTitleStyle">@android:style/WindowTitle</item> <item name="windowTitleSize">25dip</item> <item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item> <item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>

至于控件的Style设计就范围大多了,看看Eclipse的Android控件属性编辑器[Properties]就大概知道有哪些条目,而Android内置的style.xml也只是定义每个控件的默认样式而已....不过控件的style不建议大改,耐看的style更能让用户长时间使用软件。另外,控件的Style在很多情况下都用到9.png,学习9.png就必须到/base/core/res/res/drawable-hdpi里面看看,里面有很多系统内置的9.png。

PS:为了研究Android的Style和Theme,强烈建议下载Android的base.git!

接下来看看本文程序的效果图:

Android Style与Theme ._第1张图片

本文程序的themes.xml代码如下,自定义了WindowTitle,:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<!--继承Android内置的Theme.Light,位于/base/core/res/res/values/themes.xml -->
<style name="Theme" parent="android:Theme.Light">
<item name="android:windowFullscreen">true</item>
<item name="android:windowTitleSize">60dip</item>
<item name="android:windowTitleStyle">@style/WindowTitle</item>
</style>

<style name="WindowTitle" parent="android:WindowTitle">
<item name="android:singleLine">true</item>
<item name="android:shadowColor">#BB000000</item>
<item name="android:shadowRadius">2.75</item>
</style>
</resources>

要为Activity使用theme,要么使用代码 setTheme(R.style.Theme),要么在Application Manifest里面设置Android Style与Theme ._第2张图片

本文程序的styles.xml代码如下,background默认使用的是9.png,xml定义在/base/core/res/res/drawable/之下:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="TextView">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#008</item>
<item name="android:shadowColor">@android:color/black</item>
<item name="android:shadowRadius">2.0</item>
</style>

<style name="EditText">
<item name="android:shadowColor">@android:color/black</item>
<item name="android:shadowRadius">1.0</item>
<item name="android:background">@android:drawable/btn_default</item>
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
</style>

<style name="Button">
<item name="android:background">@android:drawable/edit_text</item>
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
</style>
</resources>

main.xml代码如下:

[xhtml] view plain copy print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TextViewandroid:layout_width="fill_parent"
  6. android:layout_height="wrap_content"android:text="@string/hello"
  7. style="@style/TextView"/>
  8. <EditTextandroid:id="@+id/EditText01"android:layout_height="wrap_content"
  9. style="@style/EditText"android:layout_width="fill_parent"
  10. android:text="类似Button的EditText"></EditText>
  11. <EditTextandroid:id="@+id/EditText02"android:layout_height="wrap_content"
  12. android:layout_width="fill_parent"android:text="普通的EditText"></EditText>
  13. <Buttonandroid:id="@+id/Button01"android:layout_height="wrap_content"
  14. style="@style/Button"android:layout_width="fill_parent"android:text="类似EditText的Button"></Button>
  15. </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" style="@style/TextView" /> <EditText android:id="@+id/EditText01" android:layout_height="wrap_content" style="@style/EditText" android:layout_width="fill_parent" android:text="类似Button的EditText"></EditText> <EditText android:id="@+id/EditText02" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="普通的EditText"></EditText> <Button android:id="@+id/Button01" android:layout_height="wrap_content" style="@style/Button" android:layout_width="fill_parent" android:text="类似EditText的Button"></Button> </LinearLayout>

更多相关文章

  1. Android Chronometer控件开发
  2. Android 控件一 TextView
  3. Android 控件二 Button
  4. Android控件TextView中ellipsize属性(设置当文字长度超过textview
  5. android控件背景揭密--NinePatch
  6. Android spinner控件的实现
  7. android动态创建控件
  8. [转]Android 应用初始化及窗体事件(按键)的分发 [此博文包含图片]
  9. Android应用开发——TextView控件属性列表

随机推荐

  1. Android中矢量图使用
  2. HTC Kaiser 上如何安装运行Android
  3. Activity总体介绍
  4. Android Service解析
  5. android studio中断开SVN连接,并彻底清理
  6. Android中ArrayAdapter和BaseAdapter的区
  7. Android 调试机制
  8. java Android SDK安装与环境变量配置以及
  9. Android JNI使用笔记
  10. Android(安卓)ListView 获取网络上的数据