Android入门笔记之源码解析三
<1>简介
仿爱奇艺客户端源码分析。
<2>关键步骤
主要有6个Activity,MainActivity为主Activity。
布局方面:title是共享的。
AccountActivity:”我的资料”界面。主要是获取了title的对象,然后修改了title的文件。
ChannelActivity:分类界面。主要是获取了title的对象,然后修改了title的文件。
MoreActitvity:更多界面。主要是获取了title的对象,然后修改了title的文件。
HomeActivity:首页界面。通过一个GalleryAdapter提供数据源实现了一个Gallery,通过一个BaseExpandableListAdapter提供数据源实现了一个ExpandableListView。Tags数组用来标识各个模块是否被选中。
SearchActivity:搜索界面。通过一个GridAdapter提供数据源来填充从布局文件中获取的2个GridView。
MainActivity:主界面,继承自TabActivity,主要是下方的几个Tab,整个布局文件是多重线性布局嵌套。该类文件中主要是对几个Tab文件进行了处理,为mTabHost增加了各个界面的TabSpec,以及相应的跳转处理。
<3>知识点
一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 没有焦点时的背景图片 -->
<item android:drawable="@drawable/handle_normal" android:state_enabled="true" android:state_window_focused="false"/>
<!-- 触摸模式按下时的背景图片 -->
<item android:drawable="@drawable/handle_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/handle_focused" android:state_enabled="true" android:state_focused="true"/>
<item android:drawable="@drawable/handle_normal" android:state_enabled="true"/>
<!-- 获得焦点时的图片背景 -->
<item android:drawable="@drawable/handle_focused" android:state_focused="true"/>
<!--
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
-->
</selector>
二.使用xml文件:
1.方法一:在listview中配置android:listSelector="@drawable/xxx
或者在listview的item中添加属性android:background="@drawable/xxx"
2.方法二:Drawabledrawable = getResources().getDrawable(R.drawable.xxx);
ListView.setSelector(drawable);但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"使其透明。
相关属性:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。
ExpandableListView
1、简介
android中有一种expandablelistview,可以扩展的listview,就是那种点击一下可以扩展出子项,再点一下收缩回去的显示list。
一个视图显示项目的垂直滚动的两级列表。这不同于ListView,允许有两级列表。
分组能单独地被扩展出到显出它的子项目。各子项目来自ExpandableListAdapter相关的View。
2、重要方法
expandGroup(intgroupPos) :在分组列表视图中展开一组,
setSelectedGroup(intgroupPosition) :设置选择指定的组。
setSelectedChild(intgroupPosition, int childPosition, boolean shouldExpandGroup) :设置选择指定的子项。
getPackedPositionGroup(longpackedPosition) :返回所选择的组
getPackedPositionForChild(intgroupPosition, int childPosition) :返回所选择的子项
getPackedPositionType(longpackedPosition) :返回所选择项的类型(Child,Group)
isGroupExpanded(intgroupPosition) :判断此组是否展开
<4>代码及解释
效果截图:
源代码地址:
http://download.csdn.net/detail/gmj4850/6301425