Android入门笔记之源码解析三
来源:互联网 发布:拦截导弹算法 编辑:程序博客网 时间:2024/05/15 09:13
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>知识点
android背景选择器selector用法汇总
一.创建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);
相关属性:
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
- Android入门笔记之源码解析三
- Android入门笔记之源码解析一
- Android入门笔记之源码解析二
- Android入门笔记之源码解析四
- Android开发入门学习笔记之三
- 系统入门(5):Android 源码解析 之 setContentView
- Android FM模块学习之四源码解析(三)
- Android源码解析之(三)-->异步任务AsyncTask
- android Volley源码解析笔记
- Spring 源码解析之HandlerAdapter源码解析(三)
- 【JDk源码解析之三】HashMap源码解析
- Spring 源码解析之HandlerAdapter源码解析(三)
- Spring 源码解析之HandlerAdapter源码解析(三)
- Android源码解析之ComponentCallbacks
- Android 源码解析 之 setContentView
- Android源码解析之Dialog
- Android 源码解析 之 setContentView
- android之LruCache源码解析
- vs2008调试c#网页时出现“加载配置文件时出错: 未能映射路径'/' "错误 .
- Oracle中Inventory目录作用以及如何重建此目录
- 哈夫曼编码
- 【将Win7系统用户配置文件换到其他盘】
- arning LNK4089: all references to "USER32.dll" discarded by /OPT:REF
- Android入门笔记之源码解析三
- java 多线程编程总结
- VMware Ubuntu NAT上网方式配置
- linux单独安装oracle客户端(instantclient)
- C++时间格式转换函数(字符串转整型)
- Android开发笔记——TCP/IP
- android基础--最基本的SQLite实例
- 旋转矩阵
- 中秋前一天做了碎石,中秋养病.