android中style的学习心得

通过学习发现android中界面、元素及动画一般都用到style,关于系统自带的styles.xml文件(我的在D:\android-sdk-windows\platforms\android-19\data\res\values\styles.xml),源码如下:

   <style name="WindowTitle">
        <item name="android:singleLine">true</item>
        <item name="android:textAppearance">@style/TextAppearance.WindowTitle</item>
        <item name="android:shadowColor">#BB000000</item>
        <item name="android:shadowRadius">2.75</item>
    </style>
    <style name="DialogWindowTitle">
        <item name="android:maxLines">1</item>
        <item name="android:scrollHorizontally">true</item>
        <item name="android:textAppearance">@style/TextAppearance.DialogWindowTitle</item>
    </style>

  ……

以上是关于窗体或对话框样式;


<style name="Widget.ProgressBar.Horizontal">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
        <item name="android:minHeight">20dip</item>
        <item name="android:maxHeight">20dip</item>
        <item name="android:mirrorForRtl">true</item>
    </style>
    <style name="Widget.SeekBar">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:minHeight">20dip</item>
        <item name="android:maxHeight">20dip</item>
        <item name="android:thumb">@android:drawable/seek_thumb</item>
        <item name="android:thumbOffset">8dip</item>
        <item name="android:focusable">true</item>
        <item name="android:mirrorForRtl">true</item>
    </style>

……

以上是关于UI控件的样式;


 <style name="Animation.Activity">
        <item name="activityOpenEnterAnimation">@anim/activity_open_enter</item>
        <item name="activityOpenExitAnimation">@anim/activity_open_exit</item>
        <item name="activityCloseEnterAnimation">@anim/activity_close_enter</item>
        <item name="activityCloseExitAnimation">@anim/activity_close_exit</item>
        <item name="taskOpenEnterAnimation">@anim/task_open_enter</item>

……

</style>

……

以上是关于Activity切换时动画样式;


    <style name="TextAppearance.Widget.ActionBar.Title"
           parent="@android:style/TextAppearance.Medium">
    </style>
    <style name="TextAppearance.Widget.ActionBar.Subtitle"
           parent="@android:style/TextAppearance.Small">
    </style>

    <style name="Widget.PopupMenu" parent="Widget.ListPopupWindow">
    </style>

……

以上关于状态栏及弹出菜单样式,可以看出,样式也可以继承,parent对应父样式;


style.name是全局唯一的,其他地方要通过name关联引用的,parent有点类似继承。style标签里面的每一个<item />对应的是一个属性及其值,一般都是系统自带的属性,如果自定义style是可以包含自定义属性的。

在布局文件中,一般的UI控件若没有显示的设置style=""属性,系统在渲染时会默认给定一个,当然也可以显示指定控件的style属性,如下:

<ProgressBar android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            style="@android:style/Widget.ProgressBar.Horizontal" />

<Button android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="button1"
            style="@android:style/Widget.Button.Inset" />

引用系统自带的style都是以“@android:style/”开头的+[style.name];其实可以看作style是包含很多属性的集合,它作为一个整体加到元素上的;

如果要自定义style也是可以的,在res/values/strings.xml文件里或在values目录下新建一个xxx.xml,写入自己的样式:

<style name="my_progress_style" parent="android:Widget.ProgressBar.Horizontal">
      <item name="android:indeterminateOnly" >false</item>
      <item name="android:progressDrawable">@drawable/progress_layer_list</item>
      <item name="android:minHeight">5dp</item>
      <item name="android:maxHeight">5dp</item>
</style>

<style name="my_button_style" >
        <item name="android:background" >#ff550000</item>
        <item name="android:longClickable">false</item>
        <item name="android:alpha">100</item>
        <item name="android:height">36dp</item>
        <item name="android:width">64dp</item>
</style>

上面第一个是定义了进度条样式它有继承父样式;第二个是定义了按钮样式,其实也可以用于其他控件,只要里面所有属性都支持;

在布局文件中引用自定义样式:

<ProgressBar android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            style="@style/my_progress_style"  />

去掉@android:直接使用@style/[style.name]。

大致了解这么多,细节还需再研究研究。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值