- 浏览: 693395 次
- 性别:
- 来自: 苏州
最新评论
-
usedlie:
if (flag) { matrix.set(matrix ...
android view的缩放平移简单实现 -
jin290:
简单 快捷 非常棒 可以直接用
android 应用实现微信好友或朋友圈分享 -
貌似掉线:
0是朋友1是朋友圈
android 应用实现微信好友或朋友圈分享 -
zhangzhanlei:
[color=red][/color]
android 应用实现微信好友或朋友圈分享 -
shizhangliao:
android适配多分辨率的小技巧
前阵子写到一个Expandlistview的东西。用来做下载的,让我这菜鸟死了不少脑细胞。想想贴出来吧。方便自己,也方便大家。
首先是Activity里oncreate方法咯:
如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inflater = getLayoutInflater(); setContentView(R.layout.download); list = (ExpandableListView) findViewById(R.id.expand); //设置背景透明 list.setCacheColorHint(Color.TRANSPARENT); list.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { //写点击事件... return false; } }); mAdapter = new ExpandAdapter(inflater); list.setAdapter(mAdapter); }
下面是适配器的代码:
public class ExpandAdapter extends BaseExpandableListAdapter { private LayoutInflater expandview; /** * * 带参构造 * * @param inflater 可扩展视图 */ @SuppressWarnings("unchecked") public ExpandAdapter(LayoutInflater inflater) { //给groupVector添加String值,用作菜单显示 allTask.clear(); allTask.add("finish"); allTask.add("running"); //将inflater 参数赋给本地的inflater expandview = inflater; for (int i = 0; i < finishsize; i++) { DownLoadTaskInfo info = (DownLoadTaskInfo) finishVector .elementAt(i); finishTask.add(info); } for (int i = 0; i < downsize; i++) { DownLoadTaskInfo info = (DownLoadTaskInfo) downVector .elementAt(i); runningTask.add(info); } //这里边启动一个根据线程来给vector赋值的。 new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } for (int i = 0; i < runningTask.size(); i++) { //赋值的代码就不贴了.. } realTask.clear(); realTask.add(finishTask); realTask.add(runningTask); } } }).start(); } // } /** * * 获得子元素对象 [功能详细描述] * * @param groupPosition 父位置 * @param childPosition 子位置 * @return 子元素 * @see android.widget.ExpandableListAdapter#getChildId(int, int) */ @Override public Object getChild(int groupPosition, int childPosition) { return realTask.elementAt(groupPosition).elementAt(childPosition); } /** * * 获得子ID [功能详细描述] * * @param groupPosition 父位置 * @param childPosition 子位置 * @return 子位置参数 * @see android.widget.ExpandableListAdapter#getChildId(int, int) */ @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } /** * * 获取子view [功能详细描述] * * @param groupPosition 父view位置 * @param childPosition 子view 位置 * @param isLastChild 最后一个子view * @param convertView convertview * @param parent 父view * @return 子view */ @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { DownLoadTaskInfo childinfo = (DownLoadTaskInfo) (realTask .get(groupPosition).get(childPosition)); convertView = getChildsView(childinfo); return convertView; } /** * * 获得子view数目 * * @param groupPosition 父view位置 * @return 子view的数目 * @see android.widget.ExpandableListAdapter#getChildrenCount(int) */ @Override public int getChildrenCount(int groupPosition) { return realTask.elementAt(groupPosition).size(); } /** * * 获得父元素 [功能详细描述] * * @param groupPosition 父元素位置 * @return 父节点名称 * @see android.widget.ExpandableListAdapter#getGroup(int) */ @Override public Object getGroup(int groupPosition) { if ("finish".equals(allTask.elementAt(groupPosition))) { return getResources().getString(R.string.DownLoadFinish) + " (" + finishTask.size() + ")"; } else { return getResources().getString(R.string.DownLoading) + " (" + runningTask.size() + ")"; } } /** * * 获得父元素个数 [功能详细描述] * * @return 父元素个数 * @see android.widget.ExpandableListAdapter#getGroupCount() */ @Override public int getGroupCount() { return allTask.size(); } /** * * 父元素ID [功能详细描述] * * @param groupPosition 父元素位置 * @return 父元素ID * @see android.widget.ExpandableListAdapter#getGroupId(int) */ @Override public long getGroupId(int groupPosition) { return groupPosition; } /** * 获得Group的视图 * [功能详细描述] * * @param groupPosition 父元素位置 * @param isExpanded 是否可扩展 * @param convertView 覆盖视图 * @param parent 父节点 * @return 父元素视图 * @see android.widget.ExpandableListAdapter#getGroupView(int, boolean, * android.view.View, android.view.ViewGroup) */ @Override public TextView getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView txtView = getGenericView(); txtView.setText(getGroup(groupPosition).toString()); return txtView; } /** * * 是否Stable [功能详细描述] * * @return boolean值 * @see android.widget.ExpandableListAdapter#hasStableIds() */ @Override public boolean hasStableIds() { return true; } /** * * 是否child可选 [功能详细描述] * * @param groupPosition 父元素位置 * @param childPosition 子元素位置 * @return boolean * @see android.widget.ExpandableListAdapter#isChildSelectable(int, int) */ @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } /** * * 获得父元素视图格式 [功能详细描述] * * @return TextView */ public TextView getGenericView() { AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 40); // TextView textView = new TextView(DownloadActivity.this); textView.setLayoutParams(lp); // // Center the text vertically textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); // // Set the text starting position textView.setPadding(36, 10, 0, 0); return textView; } /** * * 获得子元素视图 [功能详细描述] * * @param info 下载信息 * @return View */ public View getChildsView(DownLoadTaskInfo info) { String name = info.showName; int state = info.state; String percent = info.percent + "%"; View view = expandview.inflate(R.layout.expand_childitem, null); ImageView img = (ImageView) view.findViewById(R.id.downitem_image); TextView txtview = (TextView) view .findViewById(R.id.downitem_showname); TextView pctview = (TextView) view .findViewById(R.id.downitem_percent); //这些都是根据state来完成对应的item样式 if (state == 6) { img.setImageResource(R.drawable.download_finish); txtview.setText(name); } else if (state == 1) { img.setImageResource(R.drawable.download_start); txtview.setText(name); pctview.setText(percent); } else if (state == 2) { img.setImageResource(R.drawable.download_pause); txtview.setText(name); pctview.setText(percent); } else if (state == 3) { img.setImageResource(R.drawable.download_lost); txtview.setText(name); } return view; } }
下面的download.xml文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ExpandableListView android:id="@+id/expand" android:layout_below="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </RelativeLayout>
这个是子item的样式文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="100px" android:layout_gravity="top|center"> <ImageView android:id="@+id/downitem_image" android:layout_alignParentTop="true" android:layout_marginLeft="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/downitem_showname" android:layout_alignParentTop="true" android:layout_marginLeft="100px" android:paddingTop="5px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/downitem_percent" android:layout_alignParentTop="true" android:layout_marginLeft="260px" android:paddingTop="5px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
- android_多线程机制的讲解和例子.rar (115.1 KB)
- 下载次数: 206
评论
2 楼
mm4409092
2012-05-14
ExpandableListView实例(一)_数据库增删改查处理和listitem点击长按处理
http://blog.csdn.net/lk_blog/article/details/7562987
ExpandableListView实例(二)_两种方式实现QQ中组后面显示子条目数量效果
http://blog.csdn.net/lk_blog/article/details/7563355
ExpandableListView实例(三)_实现QQ中"未分组"效果和"未分组"不可编辑删除功能
http://blog.csdn.net/lk_blog/article/details/7563371
http://blog.csdn.net/lk_blog/article/details/7562987
ExpandableListView实例(二)_两种方式实现QQ中组后面显示子条目数量效果
http://blog.csdn.net/lk_blog/article/details/7563355
ExpandableListView实例(三)_实现QQ中"未分组"效果和"未分组"不可编辑删除功能
http://blog.csdn.net/lk_blog/article/details/7563371
1 楼
琼露露
2011-02-18
为什么例子和页面上的不是一个程序...
发表评论
-
jar包混淆
2016-09-18 16:46 1126开发过程中需要把相关功能打成jar包供别人调用,如果不混淆的话 ... -
项目从eclipse移植到studio中遇到的问题整理
2016-09-13 17:42 1169概念 eclipse workspace ---> ... -
ViewGroup&View&Activity onInterceptTouchEvent&dispatchTouchEvent&onTouch整理
2016-08-03 22:26 674一直对这块的知识一知 ... -
仿京东android客户端收件地址选择
2016-07-12 18:07 6514纯手写,可能有些问题,功能已实现 activity pac ... -
FragmentActivity中资源被回收,导致页面fragment错乱的问题
2016-06-07 13:59 3862开发过程中,页面使用fragmentactivity,可能会遇 ... -
android 通过eclipse mat来监测应用内存
2016-02-03 13:02 011dasdasdas -
【转】详解ViewPager调用FragmentPagerAdapter.notifyDataSetChanged()不能更新Fragment
2016-01-30 13:27 2053转载自 http://www.blog4app.com/?p= ... -
startActivityForResult常用使用方式
2015-04-24 11:58 1715示例 初始Activity启动目标activity,并带上了请 ... -
在android4.4以上版本 第三方应用处理短信的疑惑
2015-03-31 16:14 1032最近有个处理android手机短信的需求,需要删除本地某指定短 ... -
Beacon的入门相关知识整理(关于android开发)
2014-10-27 16:53 0To do.... -
[转]常用Github项目类库
2014-09-18 09:29 1795【转自】http://blog.csdn.net/jabony ... -
android适配多分辨率的小技巧
2014-09-05 18:10 2820android多分辨率适配其实是老生常谈的话了,今天再拿出来炒 ... -
android通过自定义schame和host来启动app
2014-08-15 15:02 2170很多时候,我们可以看到在web页面中点击链接,可以直接启动ap ... -
基础知识整理
2014-08-08 17:50 0onTouch(MotionEvent event) eve ... -
android view的缩放平移简单实现
2014-07-22 16:20 16357参考了下网上一些实现 主要是通过matrix实现的 用到的 ... -
android 应用实现微信好友或朋友圈分享
2014-07-18 16:44 60442官方的文档连接:https://open.weixin.qq. ... -
android 自定义view支持gif格式播放
2014-07-16 18:38 4165前段时间做了个项目,有播放gif的需求, 而android展示 ... -
android中自定义attr,以及style杂谈
2014-06-05 18:12 13755attr 属性 style 样式 二者都是在res/value ... -
ViewGroup中的onInterceptTouchEvent和onTouchEvent调用时序
2014-05-20 11:20 1162最近在做android类似slidemenu项目,遇到了scr ... -
获取手机网络状态的代码
2014-03-27 16:45 1297之前网上有人使用方法判断手机网络状态代码如下: Co ...
相关推荐
ExpandListView在我们开发中使用非常常见,但原生的ExpandListView往往会达不到我们使用的效果,我们会以两个例子为例来理解ExpandListView,现在我们看下如何做呢?blog:...
"expandlistview"是一个在Android开发中常见的组件,主要用于实现可展开和折叠的列表视图。这个组件在很多场合下非常实用,比如展示层级关系的数据或者进行详细信息的隐藏与显示,以提高用户体验。从标题来看,我们...
标题“2级菜单Expandlistview”恰好描述了这个控件在实现多级菜单时的应用。在这个教程中,我们将深入探讨ExpandableListView的工作原理以及如何使用它来创建一个具有二级菜单的界面。 ExpandableListView是...
在Android开发中,ExpandListView是一种常用的控件,它允许用户展开和折叠子列表项,为用户提供了一种层次化的数据展示方式。本实例将详细介绍如何在实际应用中实现ExpandListView的功能。 首先,理解...
4. **使用HeaderView**:在ListView或ExpandListView中添加一个HeaderView,然后在滚动监听中处理头部视图的位置,使其在滑动到顶部时保持固定。这种方法需要精确计算滚动位置和视图高度。 在实际项目中,我们还...
总结来说,使用`RecyclerView`实现`ExpandListView`功能,主要涉及到自定义`Adapter`、处理点击事件、管理布局以及优化性能等方面。这种实现方式具有更高的灵活性,可以根据项目需求定制更多复杂的功能,同时也能...
实现这个功能,我们可以使用SwipeRefreshLayout和LoadMoreView这两个组件。SwipeRefreshLayout作为父布局,可以包裹ExpandListView,提供下拉刷新的功能。LoadMoreView是自定义的视图,用于在列表底部显示加载更多的...
"expandlistview 加入动画效果"就是这样一个需求,它指的是为ExpandableListView添加特定的动画,例如当一个分组被展开时,其他分组会向下平滑地移动,这种效果就像水波纹扩散一样,给予用户更为直观和舒适的视觉...
"带展开动画的expandlistview"是GitHub上一个开源项目,它在ExpandableListView的基础上添加了动态展开和折叠的动画效果,提升了用户体验。 这个项目的核心在于`AnimatedExpandableListView`,它继承自Android原生...
而“expandlistview的下拉刷新”是指为这个控件添加下拉刷新功能,使得用户在顶部拉动时可以更新数据。下拉刷新在移动应用中非常常见,为用户提供了一种便捷的方式来获取最新的内容。 实现`ExpandableListView`的...
在Android开发中,有时我们需要创建一个能够展示层级结构的数据...在实际开发中,根据项目的具体需求,我们可以灵活选择使用`ExpandableListView`的基础功能,或是`TreeView`的高级特性,以实现更加复杂的树状布局。
在"有趣的ExpandListView.zip"这个压缩包中,可能包含了一个关于如何使用和定制ExpandListView的示例项目。项目中可能有以下几个关键部分: 1. **184324nzy3oxxx5v2t1obv.gif**:这可能是一个动态图,展示了...
而ExpandListView是ListView的一个扩展,它增加了子项可以展开和折叠的功能,非常适合用来构建层级结构的数据展示。本篇文章将详细探讨如何在Android中实现一个ExpandListViewDemo。 首先,我们需要理解ListView的...
在Android开发中,ExpandListView是一种常用的控件,它允许用户展开和折叠子列表项,非常适合用来展示层次结构的数据。在“仿通讯录的ExpandListView的GroupName悬停”这个主题中,我们关注的是如何实现一种类似...
在Android开发中,`ExpandListView`是一个非常常用的控件,它允许我们展示可折叠的列表项,即子项可以通过点击父项来展开或收起。本文将深入探讨如何实现`ExpandListView`的自动更新功能,这在数据动态变化时特别...
本教程将详细介绍如何使用ExpandListView来实现这种功能。 首先,我们来看标题"ExpandListView: listView显示多种风格的item的实现"。ExpandListView是Android SDK提供的一种特殊类型的ListView,它允许子项可以被...