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);  
       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