您的位置:首页 > 移动开发 > Android开发

Android Theme and style

2015-11-17 09:27 513 查看
每家公司的app都有自己的统一的特色,这就涉及到themestyle,当然他们只不是仅仅为了这个特点存在,想activity的进入动画等都能通过theme和style实现,简单并且减少了代码数,熟练使用theme
and style也能做出很炫的效果。
what is theme


主题是对整个应用中所有的Activity都起作用,或者对指定的Activity起作用 定义格式通常是改变窗口的外观格式,标题,边框等 。
what is style


为每个View重复地指定字体,颜色等属性,无疑会增加大量的代码,而且不利于我们后期项目的维护,所以就引入样式(Style) 学过web的都知道,我们可以通过css的选择器对html中的元素进行设置;而在UI组件中,我们可以通过style属性来指定
样式。



这就是源码中theme和style所有的样式了,这里不介绍如何使用,只介绍其中属性的意义,能实现什么样的效果,方便在你自己的app中实现自定义!window属性
<!--
Window attributes --><itemname="windowBackground">@drawable/screen_background_selector_dark</item>
<itemname="windowBackgroundFallback">?attr/colorBackground</item> <itemname="windowClipToOutline"false</item> <itemname="windowFrame">@null</item> <itemname="windowNoTitle"false</item> <itemname="windowFullscreen"false</item> <itemname="windowOverscan"false</item>
<itemname="windowIsFloating"false</item> <itemname="windowContentOverlay">@null</item> <itemname="windowShowWallpaper"false</item> <itemname="windowTitleStyle">@style/WindowTitle</item> <itemname="windowTitleSize"25dip</item> <itemname="windowTitleBackgroundStyle">@style/WindowTitleBackground</item>
<itemname="windowAnimationStyle">@style/Animation.Activity</item> <itemname="windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
<itemname="windowActionBar"false</item> <itemname="windowActionModeOverlay"false</item> <itemname="windowCloseOnTouchOutside"false</item> <itemname="windowTranslucentStatus"false</item> <itemname="windowTranslucentNavigation"false</item> <itemname="windowDrawsSystemBarBackgrounds"false</item>
<itemname="statusBarColor">@color/black</item> <itemname="navigationBarColor">@color/black</item> <itemname="windowActionBarFullscreenDecorLayout">@layout/screen_action_bar</item> <itemname="windowContentTransitions"false</item> <itemname="windowActivityTransitions"false</item


以上这段代码来自源码中的themes.xml,都是window的属性

windowBackground 背景
windowBackgroundFallback
windowClipToOutline
windowFrame Dialog 是否有边框
windowNoTitle 是否有标题
windowFullscreen 是否为全屏
windowOverscan 是否要求窗体铺满整屏幕
windowIsFloating 是否浮在下层之上
windowContentOverlay 设置覆盖内容背景
windowShowWallpaper 是否显示壁纸
windowTitleStyle 标题栏Style
windowTitleSize 窗体文字大小
windowTitleBackgroundStyle 标题栏背景style
windowAnimationStyle 切换时的动画样式
windowSoftInputMode在使用输入法时窗体的适配
windowActionBar 是否打开ActionBar
windowActionModeOverlay 是否覆盖action
windowCloseOnTouchOutside 是否再点击外部可关闭
windowTranslucentStatus 是否半透明状态
windowTranslucentNavigation 是否使用半透明导航
windowDrawsSystemBarBackgrounds 是否绘制系统导航栏背景
statusBarColor 状态栏颜色
navigationBarColor 导航栏颜色
windowActionBarFullscreenDecorLayout 全屏时的布局
windowContentTransitions 内容是否转换
windowActivityTransitions 活动时候转换

上面内容相信大家都用过,这里简单说一下windowAnimationStyle,主要负责activity的切换时的动画,这里有两种形式,一种是给window设置动画,一种是设置activity的动画
<itemname="@android:windowEnterAnimation">@anim/dialog_enter</item>
<itemname="@android:windowExitAnimation">@anim/dialog_exit</item


根据需要设置,这里说明一下设置activity的动画

activityOpenEnterAnimation
activityOpenExitAnimation
activityCloseEnterAnimation
activityCloseExitAnimation

这里以Activity A跳转到Activity B为例,来说明一下以上四条,第一条A跳转到B,B进入时的动画;第二条A跳转到B,A消失的动画;第三条A返回到B时,进入A的动画;第四条A返回到B,B消失的动画,这里需要说一下,如果你设定的动画没有按照你想想中那样执行,这里你需要查一下是不是两个都设定动画了,这也是我写这篇文章的原因。

当然theme.xml还有很多代码,各种各样的主题都在这里面,你不妨用到的时候再来看看,很多都是上面所介绍的那些属性,这里只看我们平时用的比较多的。
Style使用

style的使用相对就很简单了,可以实现代码整洁,减少很多不必要的东西
<stylename="Widget.Button"> <itemname="background">@drawable/btn_default</item> <itemname="focusable"true</item> <itemname="clickable"true</item>
<itemname="textAppearance">?attr/textAppearanceSmallInverse</item>
<itemname="textColor">@color/primary_text_light</item> <itemname="gravity">center_vertical|center_horizontal</item> </style>


这里就是我们经常用到的button,统一的定义格式,代码简单,直接使用style属性拿来应用即可,这里不详述

熟练使用themestyle 会给你带来很大的好处,存在即为合理,熟练使用手里的工具提高效率,写出高质量的代码!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: