StateListDrawable用于组织多个Drawable对象。定义StateListDrawable对象的XML文件的跟元素为<selector…/>。该元素可指定如下属性.android:color或android:drawable、android:state_xxx
LayerDrawable 堆叠的图片,可定制拖动条外观
<layer-list >
<item …/>
<item …/>
</layer-list >
ShapeDrawable 定义一个基本的几何图形,定义ShapeDrawable的XML文件的根元素为<shape…/>
ClipDrawable 代表从其他位图上截取的一个“图片片段”。 定义ClipDrawable的XML文件的根元素为<Clip…/>,应用:徐徐展开的风景图片
AnimationDrawable 代表一个动画
Android动画
1. 逐帧动画:类似于电影方式,一张图片、一张图片地切换
2. 补间动画:通过平移、变换计算出来
定义补间动画的XML资源文件以<set…/>元素作为根元素,其内可指定四个元素:alpha/scale/translate/rotate
定义动画的XML资源应该放在/res/animi路径下
3. 属性动画(PropertyAnimation)
Android应用有一些初始化的配置信息、应用相关的数据资源需要保存,一般用XML文件来保存,这种资源被称为原始XML资源,一般保存在/res/xml路径下。Java程序中获取实际的XML文档,可以通过Resources的如下两个方法来获取:
XmlResourceParser getXml(int id) InputStream openRawResource(int id)
样式(Style)资源:对某个类型的组件指定大致相似的格式(字体、颜色、背景色等),一个样式等于一组格式的集合。Android的样式资源也放在/res/values目录下
<resources>
<style name=…. parent=…>
<item…/>
</style>
< /resources >
主题资源与样式资源非常相似,不同在于:主题不能用于单个的View组件,其针对整个应用中所有Activity起作用或对指定的起作用。主题定义的格式应该是改变窗口外观的格式(窗口标题、边框等)
使用原始资源:Android没有为之专门提供的支持(声音文件等),可放在两个地方
1. 位于/res/raw目录下,R清单类会生成索引项
2. 位于/assets/目录下,需要通过AssetManager来管理该目录下的文件,两个方法:InputSrteam open(String fileName)、AssetFileDescriptoropenFd(String fileName)
Activity之android:launchMode:
standard:标准模式,默认的.每次启动都实例化并放入Task栈,不启动新的Task
singleTop:Task顶单例模式,当将要被启动的目标Activity位于栈顶时系统不会重新创建目标Activity实例
singleTask:Task内单例模式。Activity在一个Task内只有一个实例,如果将要启动的Activity已经存在但没有位于Task栈顶,系统会移除其上的搜友Activity
singleInstance:全局单例模式。无论从哪个Task中启动目标Activity,只会创建一个目标Acti,并会使用一个全新的Task栈来装载该Activity实例
Intent封装Android应用程序需要启动某个组件(activity,service,broadcastreceiver)的"意图",它还是应用程序组件之间通信的重要媒介(通过bundle)
Intent属性:Component(欲启动的对应组件)、Action(抽象动作)、Category(Action的额外类别信息)、<intent-filter.../>配置组件(activity,service,broadcastreceiver)所能响应的Intent(对应于Action的值)
将Fragment添加到Activity中有如下两种方式
1:在布局文件中使用<fragment.../>元素添加Fragment,<fragment.../>元素的android:name属性指定Fragment的实现类
2:在java代码中通过FragmentTransaction对象的add()方法来添加Fragment.getFragmentManager().beginTransaction()方法可返回FragmentTransaction对象
Activity与Fragment通信
1:Fragment调用getActivity获得其所在的Activity
2:Activity通过findFragmentById()或findFragmentByTag(StringTag)获得与其关联的指定的Fragment
Activity与Fragment传递数据
1:Activity->Fragment:Fragment.setArguments(Bundlebundle)
2:>Fragment-Activity:在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口,这样Fragment即可调用该回调方法将数据传给Activity