Android Theme and style

每家公司的app都有自己的统一的特色,这就涉及到theme和style,当然他们只不是仅仅为了这个特点存在,想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 -->
        <item name="windowBackground">@drawable/screen_background_selector_dark</item>
        <item name="windowBackgroundFallback">?attr/colorBackground</item>
        <item name="windowClipToOutline">false</item>
        <item name="windowFrame">@null</item>
        <item name="windowNoTitle">false</item>
        <item name="windowFullscreen">false</item>
        <item name="windowOverscan">false</item>
        <item name="windowIsFloating">false</item>
        <item name="windowContentOverlay">@null</item>
        <item name="windowShowWallpaper">false</item>
        <item name="windowTitleStyle">@style/WindowTitle</item>
        <item name="windowTitleSize">25dip</item>
        <item name="windowTitleBackgroundStyle">@style/WindowTitleBackground</item>
        <item name="windowAnimationStyle">@style/Animation.Activity</item>
        <item name="windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
        <item name="windowActionBar">false</item>
        <item name="windowActionModeOverlay">false</item>
        <item name="windowCloseOnTouchOutside">false</item>
        <item name="windowTranslucentStatus">false</item>
        <item name="windowTranslucentNavigation">false</item>
        <item name="windowDrawsSystemBarBackgrounds">false</item>
        <item name="statusBarColor">@color/black</item>
        <item name="navigationBarColor">@color/black</item>
        <item name="windowActionBarFullscreenDecorLayout">@layout/screen_action_bar</item>
        <item name="windowContentTransitions">false</item>
        <item name="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的动画

 <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
   <item name="@android:windowExitAnimation">@anim/dialog_exit</item>
<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>

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

  1. activityOpenEnterAnimation
  2. activityOpenExitAnimation
  3. activityCloseEnterAnimation
  4. activityCloseExitAnimation

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

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

Style使用

style的使用相对就很简单了,可以实现代码整洁,减少很多不必要的东西

<style name="Widget.Button">
        <item name="background">@drawable/btn_default</item>
        <item name="focusable">true</item>
        <item name="clickable">true</item>
        <item name="textAppearance">?attr/textAppearanceSmallInverse</item>
        <item name="textColor">@color/primary_text_light</item>
        <item name="gravity">center_vertical|center_horizontal</item>
    </style>

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

熟练使用theme 和style 会给你带来很大的好处,存在即为合理,熟练使用手里的工具提高效率,写出高质量的代码!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 12:35:41

Android Theme and style的相关文章

Android开发之Theme、Style探索及源码浅析

1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解整个Android中Theme.Style的关系及结构,这样我们就能游刃有余的面对实际开发中遇到的很多问题了,也就免得在自定义时遇到各种坑,譬如不清楚该继承哪个parent.不清楚为何背景会有一个黑边等. 本文主要分两部分来进行简单粗略的浅析,首先会围绕Theme与Style的定义及在App开发中的

Android系统自带样式(android:theme)

From: http://blog.csdn.net/dawanganban/article/details/17732701 http://www.cnblogs.com/bluestorm/archive/2012/07/12/2588724.html android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式 android:theme="@android:style/Theme.NoTitleBar&q

android 中theme和style的语法相关

1.theme和style都是一组属性的集合,用于定义文本.颜色.大小等显示风格.他们都是资源,可以用android系统级别的一些默认的风格和主题资源,你也可以自定义你自己的主题和风格资源. 2.自定义style 1 <resources> 2 <style name="CustomTheme"> 3 <item name="android:windowNoTitle">true</item> 4 <item n

android学习之-Theme和Style

android学习之-Theme和Style 分类: android 2013-10-11 15:01 960人阅读 评论(0) 收藏 举报 android style和theme的使用. style:样式,用来描述单独的view控件,改变其样式. theme:主题,用来控制整个应用的主题,或者某个activity的主题. style的使用:改变某控件的样式. 在style.xml中描述样式信息 [java] view plaincopy <?xml version="1.0" 

Android样式(style)和主题(theme)资源介绍-android学习之旅(五十六)

样式(style)资源 代码示例 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="mat

android的样式(style)与主题(theme)

Android上的Style分为了两个方面: 1,Theme是针对窗体级别的,改变窗体样式: 2,Style是针对窗体元素级别的,改变指定控件或者Layout的样式. Android系统的themes.xml和style.xml(位于系统源代码frameworks\base\core\res\res\values\)包含了很多系统定义好的style,建议在里面挑个合适的,然后再继承修改. 风格是一个包含一种或者多种格式化属性的集合,你可以将其用为一个单位用在布局XML单个元素当中.比如,你可以定

今天来讲讲Android的主题和样式(Theme和Style)

首先我们来探讨下什么是样式(Style) 有这样一个情景,当我们在写一个布局文件中,里面有很多视图,它们有着相同的属性,如果每个视图都写一遍这样相同的属性,这样会显得代码相当累赘 而且在维护代码的时候非常不方便,这时我们就可以将这些相同属性的代码抽取出来,放到styles.xml中,方便我们修改代码. 如何声明一个样式呢? 在styles.xml文件中建立一个<style>节点,然后在这个节点中添加<item>子节点,如: <style name="button_p

Android 避免APP启动闪黑屏的解决办法(Theme和Style)

闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面 闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面.也就是说需要处理一些数据后,才会显示.按照这种思路,是不是我把初始化的工作尽量减少就可以避免黑屏?事实是,就算你onCreate啥都不做,仍然会闪一下黑屏,因为初始化解析界面时需要一定时间.下面是解决办法: 1.自定义Theme 复制代码代码如下: 设置背景图Theme<style na

Android中的Theme和Style

1.首先,Theme属性详解: android:theme="@android:style/Theme.Dialog" //Activity显示为对话框模式 android:theme="@android:style/Theme.NoTitleBar" //不显示应用程序标题栏 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不显示应用程序标题栏,并全屏 android:t