200 likes | 385 Views
2.3 创建资源. Android 资源简介. 传统的 Java 程序中,一般在程序中用到的字符串、常量都是直接写在代码中。也不会添加任何注释。尽管会给当时的编程带来便利,但是会大大增强后期的维护成本 Android 程序对这种情况做了很好的改进,可以将程序中用到的各种资源,比如:字符串、颜色、数组、菜单、图片、声音、视频等都放到 res 目录中定义,在程序中使用这些资源 优点:减少代码量,同时为程序的后期维护也带来便利。. 资源的种类. 简单的值. 字符串 (string)
E N D
Android资源简介 • 传统的Java程序中,一般在程序中用到的字符串、常量都是直接写在代码中。也不会添加任何注释。尽管会给当时的编程带来便利,但是会大大增强后期的维护成本 • Android程序对这种情况做了很好的改进,可以将程序中用到的各种资源,比如:字符串、颜色、数组、菜单、图片、声音、视频等都放到res目录中定义,在程序中使用这些资源 • 优点:减少代码量,同时为程序的后期维护也带来便利。
简单的值 • 字符串(string) • <string name=“ string_ name”>sting_value</string> • 工程中用到的字符串可以作为资源声明在配置文件中; • 实现程序可配置性; • 在代码中引用字符串资源; • 字符串资源文件位于res/values目录下,该资源文件的根节点是<resources>每个<string>元素代表的是一个字符串常量,其中name为常量名,标签中间的内容为字符串的值
简单的值 • 颜色(color) • <color name=”cname”>value</color> • 通过RGB三原色和一个alpha (透明度)值定义; • 以#开始,后面是Alpha-Red-Green-Blue格式; • #RGB • #ARGB • #RRGGBB • #AARRGGBB
简单的值 • 尺寸(dimen) • <dimen name="dimen_ name">dimen_value</dimen> • 尺寸资源是用来定义大小的,由一系列的浮点数组成,尺寸资源要在res/values目下的资源文件中借助<dimen>标签定义
简单的值 • 尺寸(dimen) • <dimen name="dimen_ name">dimen_value</dimen>
样式和主题资源 • 样式资源可以将需要设置相同属性的属性值提取出来放到单独的文件中,然后再需要用到的地方引用该样式。这样可以保证界面风格的统一,同时也为修改样式带来了方便。这一点和以前的CSS技术相似。 • 样式资源也需要在res/values目录的资源文件中定义。每一个<style>标签表示一个样式,name属性表示样式名,每个样式的属性使用item表示。样式可以继承。通过<style>的parent属性指定父样式资源id。
样式和主题资源 • <style name="style1"> • <item name="android:textColor">#ff0099</item> • <item name="android:textSize">25sp</item> • </style> • <style name="style2" parent="@style/style1"> • <item name="android:gravity">right</item> • <item name="android:textSize">35sp</item> • </style>
drawables • drawable资源:图片/颜色资源,主要用于绘制屏幕; • 分类:位图文件(Bitmap File)、颜色(Color Drawable)、九图图片(Nine-Patch Image); • 所有的Drawable都作为单独的文件存储在res/drawable文件夹下。
布局 • 布局资源是Android中最常使用的一种资源,Android可以将屏幕中组件的布局方式定义在一个XML文件中,这有点像Web开发中的HTML页面。我们可以调用Activity.setContentView()方法,将布局文件展示在Activity上。 • Android通过LayoutInflater类将XML文件中的组件解析为可视化的视图组件。布局文件保存在res\layout\文件夹中,文件名称任意。
布局 • <?xml version="1.0" encoding="utf-8" ?> • <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> • <TextViewandroid:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> • </LinearLayout>
菜单 • 资源位置:res\menu\my_menu.xml; • 菜单资源文件结构:<memu>根元素,在<memu>根元素里嵌套<item>和<group>子元素,<item>元素中也可以嵌套<memu>形成子菜单; • <memu>根元素没有属性,它包含<item>和<group>子元素;
菜单 • 资源位置:res\menu\my_menu.xml; • 菜单资源文件结构:<memu>根元素,在<memu>根元素里嵌套<item>和<group>子元素,<item>元素中也可以嵌套<memu>形成子菜单; • <memu>根元素没有属性,它包含<item>和<group>子元素; • <group>表示菜单组,属性说明: • id:唯一标示该菜单组的引用id; • menuCategory:一个分类排序整数; • checkableBehavior:选择行为,单选、多选或其他,有效值为none、all、single; • visible:是否可见,true或false; • enabled:是否可用, true或false;
菜单 • <item>表示菜单项,包含在<menu>或<group>中,属性如下: • id:唯一标示该菜单组的引用id; • memuCategory:菜单分类; • title:菜单标题字符串; • titleCondensed:浓缩标题,适合标题太长的时候使用; • icon:菜单的图标; • alphabeticShortcut:字符快捷键; • numericShortcut:数字快捷键; • checked:是否已经被选; • visible:是否可见; • enabled:是否可用;
动画 • View Animation • View Animation(Tween Animation):补间动画,给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。 • View animation只能应用于View对象,而且只支持一部分属性,如支持缩放旋转而不支持背景颜色的改变。 可以给一个View同时设置多个动画,比如从透明至不透明的淡入效果,与从小到大的放大效果,这些动画可以同时进行,也可以在一个完成之后开始另一个。 • 用XML定义的动画放在/res/anim/文件夹内,XML文件的根元素可以为<alpha>,<scale>,<translate>,<rotate>,interpolator元素或<set>(表示以上几个动画的集合,set可以嵌套)。默认情况下,所有动画是同时进行的,可以通过startOffset属性设置各个动画的开始偏移(开始时间)来达到动画顺序播放的效果
动画 • DrawableAnimation • Drawable Animation(Frame Animation):帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果。在XML中的定义方式如下: • <animation-list xmlns:android="http://schemas.android.com/apk/res/android" • android:oneshot="true"> • <item android:drawable="@drawable/rocket_thrust1" android:duration="200" /> • <item android:drawable="@drawable/rocket_thrust2" android:duration="200" /> • <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /> • </animation-list> • 必须以<animation-list>为根元素,以<item>表示要轮换显示的图片,duration属性表示各项显示的时间。XML文件要放在/res/drawable/目录下。
动画 • Property Animation • 属性动画,这个是在Android 3.0中才引进的,它更改的是对象的实际属性,在View Animation(Tween Animation)中,其改变的是View的绘制效果,真正的View的属性保持不变,比如无论你在对话中如何缩放Button的大小,Button的有效点击区域还是没有应用动画时的区域,其位置与大小都不变。而在Property Animation中,改变的是对象的实际属性,如Button的缩放,Button的位置与大小属性值都改变了。而且Property Animation不止可以应用于View,还可以应用于任何对象。Property Animation只是表示一个值在一段时间内的改变,当值改变时要做什么事情完全是你自己决定的。
动画 • 在Property Animation中,可以对动画应用以下属性: • Duration:动画的持续时间 • TimeInterpolation:属性值的计算方式,如先快后慢 • TypeEvaluator:根据属性的开始、结束值与TimeInterpolation计算出的因子计算出当前时间的属性值 • Repeat Count and behavoir:重复次数与方式,如播放3次、5次、无限循环,可以此动画一直重复,或播放完时再反向播放 • Animation sets:动画集合,即可以同时对一个对象应用几个动画,这些动画可以同时播放也可以对不同动画设置不同开始偏移 • Frame refreash delay:多少时间刷新一次,即每隔多少时间计算一次属性值,默认为10ms,最终刷新时间还受系统进程调度与硬件的影响