这里的源码基地85wu能给我发份吗?谢谢啦

可以把那个小区管理系统的源代码给我吗?谢谢啦!_百度知道可否发一份Androvm的源代码给我,万分感谢 - 开源中国社区
当前访客身份:游客 [
当前位置:
您好!我想下载androvm的源代码,在网上搜索时,搜到一篇帖子(/forum/#!searchin/genymotion-users/androvm$20sourcecode/genymotion-users/dZKxOQy4MA4/FpfyMY5Mql4J),您当时回复说在您的博客里面友提供下载地址,但我没有找到。 请问您可以发一份给我么?万分感谢! 我的邮箱地址:。
共有4个答案
<span class="a_vote_num" id="a_vote_num_
你好,是的,当时Androvm还没有商业化的时候,我参与了Androvm的开发,后来Androvm产品演化成商业产品Genimotion后我就放弃了Androvm的开发,所以Androvm的版本只有到4.2的,邮箱不能发大数据文件的,你可以给我一个联系方式,或者加我QQ ,看看我能帮你什么再说&
--- 共有 1 条评论 ---
万分感激,已加您qq!
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
我也要一份 &androvm 谢谢您 &邮箱
& &qq 已加
<span class="a_vote_num" id="a_vote_num_
我也要一份 &androvm 谢谢您 &邮箱
& &qq 已加
<span class="a_vote_num" id="a_vote_num_
此人手里代码不全,千万别花钱买了。
更多开发者职位上
有什么技术问题吗?Android 下拉刷新框架实现
Android 下拉刷新框架实现
19176人阅读
前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些demo的质量参差不齐,用户体验也不好,接口设计也不行。最张没办法,终于忍不了了,自己就写了一个下拉刷新的框架,这个框架是一个通用的框架,效果和设计感觉都还不错,现在分享给各位看官。
1. 感谢lk6233160同学提出的问题,旋转View时调用setRotation方法只能是在API Level11(3.0)以上才能用,这个问题的解决办法是给ImageView设置一个Matrix,把Matrix上面作用一个旋转矩阵,但是如果不是ImageView的话,可能实现起来比较麻烦,再次谢谢lk6233160同学。
2. 谢谢提出的问题,向下滑动后,再向上滑动到头,只能再松手后才能再次下拉。这个问题的回复请参考评论。
技术交流群:
QQ:(人员已满)
1. 关于下拉刷新
下拉刷新这种用户交互最早由twitter创始人洛伦·布里切特(Loren Brichter)发明,有理论认为,下拉刷新是一种适用于按照从新到旧的时间顺序排列feeds的应用,在这种应用场景中看完旧的内容时,用户会很自然地下拉查找更新的内容,因此下拉刷新就显得非常合理。大家可以参考这篇文章:,下面我贴出一个有趣的下拉刷新的案例。
图一、有趣的下拉刷新案例(一)
图一、有趣的下拉刷新案例(二)
2. 实现原理
上面这些例子,外观做得再好看,他的本质上都一样,那就是一个下拉刷新控件通常由以下几部分组成:
【1】Header
Header通常有下拉箭头,文字,进度条等元素,根据下拉的距离来改变它的状态,从而显示不同的样式
【2】Content
这部分是内容区域,网上有很多例子都是直接在ListView里面添加Header,但这就有局限性,因为好多情况下并不一定是用ListView来显示数据。我们把要显示内容的View放置在我们的一个容器中,如果你想实现一个用ListView显示数据的下拉刷新,你需要创建一个ListView旋转到我的容器中。我们处理这个容器的事件(down, move, up),如果向下拉,则把整个布局向下滑动,从而把header显示出来。
【3】Footer
Footer可以用来显示向上拉的箭头,自动加载更多的进度条等。
以上三部分总结的说来,就是如下图所示的这种布局结构:
图三,下拉刷新的布局结构
关于上图,需要说明几点:
1、这个布局扩展于LinearLayout,垂直排列
2、从上到下的顺序是:Header, Content, Footer
3、Content填充满父控件,通过设置top, bottom的padding来使Header和Footer不可见,也就是让它超出屏幕外
4、下拉时,调用scrollTo方法来将整个布局向下滑动,从而把Header显示出来,上拉正好与下拉相反。
5、派生类需要实现的是:将Content View填充到父容器中,比如,如果你要使用的话,那么你需要把ListView, ScrollView, WebView等添加到容器中。
6、上图中的红色区域就是屏的大小(严格来说,这里说屏幕大小并不准确,应该说成内容区域更加准确)
3. 具体实现
明白了实现原理与过程,我们尝试来具体实现,首先,为了以后更好地扩展,设计更加合理,我们把下拉刷新的功能抽象成一个接口:
1、IPullToRefresh&T extends View&
它具体的定义方法如下:
[java] public&interface&IPullToRefresh&T&extends&View&&{&&&&&&public&void&setPullRefreshEnabled(boolean&pullRefreshEnabled);&&&&&&public&void&setPullLoadEnabled(boolean&pullLoadEnabled);&&&&&&public&void&setScrollLoadEnabled(boolean&scrollLoadEnabled);&&&&&&public&boolean&isPullRefreshEnabled();&&&&&&public&boolean&isPullLoadEnabled();&&&&&&public&boolean&isScrollLoadEnabled();&&&&&&public&void&setOnRefreshListener(OnRefreshListener&T&&refreshListener);&&&&&&public&void&onPullDownRefreshComplete();&&&&&&public&void&onPullUpRefreshComplete();&&&&&&public&T&getRefreshableView();&&&&&&public&LoadingLayout&getHeaderLoadingLayout();&&&&&&public&LoadingLayout&getFooterLoadingLayout();&&&&&&public&void&setLastUpdatedLabel(CharSequence&label);&&}&&这个接口是一个泛型的,它接受View的派生类,因为要放到我们的容器中的不就是一个View吗?
2、PullToRefreshBase&T extends View&
这个类实现了IPullToRefresh接口,它是从LinearLayout继承过来,作为下拉刷新的一个抽象基类,如果你想实现ListView的下拉刷新,只需要扩展这个类,实现一些必要的方法就可以了。这个类的职责主要有以下几点:
处理onInterceptTouchEvent()和onTouchEvent()中的事件:当内容的View(比如ListView)正如处于最顶部,此时再向下拉,我们必须截断事件,然后move事件就会把后续的事件传递到onTouchEvent()方法中,然后再在这个方法中,我们根据move的距离再进行scroll整个View。负责创建Header、Footer和Content View:在构造方法中调用方法去创建这三个部分的View,派生类可以重写这些方法,以提供不同式样的Header和Footer,它会调用createHeaderLoadingLayout和createFooterLoadingLayout方法来创建Header和Footer创建Content View的方法是一个抽象方法,必须让派生类来实现,返回一个非null的View,然后容器再把这个View添加到自己里面。设置各种状态:这里面有很多状态,如下拉、上拉、刷新、加载中、释放等,它会根据用户拉动的距离来更改状态,状态的改变,它也会把Header和Footer的状态改变,然后Header和Footer会根据状态去显示相应的界面式样。
3、PullToRefreshBase&T extends View&继承关系
这里我实现了三个下拉刷新的派生类,分别是ListView、ScrollView、WebView三个,它们的继承关系如下:
图四、PullToRefreshBase类的继承关系
关于PullToRefreshBase类及其派和类,有几点需要说明:
对于ListView,ScrollView,WebView这三种情况,他们是否滑动到最顶部或是最底部的实现是不一样的,所以,在PullToRefreshBase类中需要调用两个抽象方法来判断当前的位置是否在顶部或底部,而其派生类必须要实现这两个方法。比如对于ListView,它滑动到最顶部的条件就是第一个child完全可见并且first postion是0。这两个抽象方法是:
[java] /**&&*&判断刷新的View是否滑动到顶部&&*&&&*&@return&true表示已经滑动到顶部,否则false&&*/&&protected&abstract&boolean&isReadyForPullDown();&&&&/**&&*&判断刷新的View是否滑动到底&&*&&&*&@return&true表示已经滑动到底部,否则false&&*/&&protected&abstract&boolean&isReadyForPullUp();&&
创建可下拉刷新的View(也就是content view)的抽象方法是
[java] /**&&*&创建可以刷新的View&&*&&&*&@param&context&context&&*&@param&attrs&属性&&*&@return&View&&*/&&protected&abstract&T&createRefreshableView(Context&context,&AttributeSet&attrs);&&4、LoadingLayout
LoadingLayout是刷新Layout的一个抽象,它是一个抽象基类。Header和Footer都扩展于这个类。这类抽象类,提供了两个抽象方法:
getContentSize
这个方法返回当前这个刷新Layout的大小,通常返回的是布局的高度,为了以后可以扩展为水平拉动,所以方法名字没有取成getLayoutHeight()之类的,这个返回值,将会作为松手后是否可以刷新的临界值,如果下拉的偏移值大于这个值,就认为可以刷新,否则不刷新,这个方法必须由派生类来实现。
这个方法用来设置当前刷新Layout的状态,PullToRefreshBase类会调用这个方法,当进入下拉,松手等动作时,都会调用这个方法,派生类里面只需要根据这些状态实现不同的界面显示,如下拉状态时,就显示出箭头,刷新状态时,就显示loading的图标。
可能的状态值有:RESET, PULL_TO_REFRESH, RELEASE_TO_REFRESH, REFRESHING, NO_MORE_DATA
LoadingLayout及其派生类的继承关系如下图所示:
图五、LoadingLayout及其派生类的类图
我们可以随意地制定自己的Header和Footer,我们也可以实现如图一和图二中显示的各种下拉刷新案例中的Header和Footer,只要重写上述两个方法getContentSize()和setState()就行了。HeaderLoadingLayout,它默认是显示箭头式样的布局,而RotateLoadingLayout则是显示一个旋转图标的式样。
5、事件处理
我们必须重写PullToRefreshBase类的两个事件相关的方法onInterceptTouchEvent()和onTouchEvent()方法。由于ListView,ScrollView,WebView它们是放到PullToRefreshBase内部的,所在事件先是传递到PullToRefreshBase#onInterceptTouchEvent()方法中,所以我们应该在这个方法中去处理ACTION_MOVE事件,判断如果当前ListView,ScrollView,WebView是否在最顶部或最底部,如果是,则开始截断事件,一旦事件被截断,后续的事件就会传递到PullToRefreshBase#onInterceptTouchEvent()方法中,我们再在ACTION_MOVE事件中去移动整个布局,从而实现下拉或上拉动作。
6、滚动布局(scrollTo)
如图三的布局结构可知,默认情况下Header和Footer是放置在Content View的最上面和最下面,通过设置padding来让他跑到屏幕外面去了,如果我们将整个布局向下滚动(scrollTo)一定距离,那么Header就会被显示出来,基于这种情况,所以在我的实现中,最终我是调用scrollTo来实现下拉动作的。
总的说来,实现的重要的点就这些,具体的一些细节在实现在会碰到很多,可以参考代码。
4. 如何使用
使用下拉刷新的代码如下
[java] @Override&&&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&&&&&&&&&&&&&mPullListView&=&new&PullToRefreshListView(this);&&&&&&&&&&setContentView(mPullListView);&&&&&&&&&&&&&&&&&&&&//&上拉加载不可用&&&&&&&&&&mPullListView.setPullLoadEnabled(false);&&&&&&&&&&//&滚动到底自动加载可用&&&&&&&&&&mPullListView.setScrollLoadEnabled(true);&&&&&&&&&&&&&&&&&&&&mCurIndex&=&mLoadDataC&&&&&&&&&&mListItems&=&new&LinkedList&String&();&&&&&&&&&&mListItems.addAll(Arrays.asList(mStrings).subList(0,&mCurIndex));&&&&&&&&&&mAdapter&=&new&ArrayAdapter&String&(this,&android.R.layout.simple_list_item_1,&mListItems);&&&&&&&&&&&&&&&&&&&&//&得到实际的ListView&&&&&&&&&&mListView&=&mPullListView.getRefreshableView();&&&&&&&&&&//&绑定数据&&&&&&&&&&mListView.setAdapter(mAdapter);&&&&&&&&&&&&&&&&&//&设置下拉刷新的listener&&&&&&&&&&mPullListView.setOnRefreshListener(new&OnRefreshListener&ListView&()&{&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&public&void&onPullDownToRefresh(PullToRefreshBase&ListView&&refreshView)&{&&&&&&&&&&&&&&&&&&mIsStart&=&true;&&&&&&&&&&&&&&&&&&new&GetDataTask().execute();&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&public&void&onPullUpToRefresh(PullToRefreshBase&ListView&&refreshView)&{&&&&&&&&&&&&&&&&&&mIsStart&=&false;&&&&&&&&&&&&&&&&&&new&GetDataTask().execute();&&&&&&&&&&&&&&}&&&&&&&&&&});&&&&&&&&&&setLastUpdateTime();&&&&&&&&&&&&&&&&&&&&//&自动刷新&&&&&&&&&&mPullListView.doPullRefreshing(true,&500);&&&&&&}&&这是初始化一个下拉刷新的布局,并且调用setContentView来设置到Activity中。
在下拉刷新完成后,我们可以调用onPullDownRefreshComplete()和onPullUpRefreshComplete()方法来停止刷新和加载
5. 运行效果
这里列出了demo的运行效果图。
图六、ListView下拉刷新,注意Header和Footer的样式
图七、WebView和ScrollView的下拉刷新效果图
6. 源码下载
实现这个下拉刷新的框架,并不是我的原创,我也是参考了很多开源的,把我认为比较好的东西借鉴过来,从而形成我的东西,我主要是参考了下面这个demo:
&这个demo写得不错,不过他这个太复杂了,我们都知道,一旦复杂了,万一我们要添加一些需要,自然也要费劲一些,我其实就是把他的简化再简化,以满足我们自己的需要。
转载请说明出处
谢谢!!!
7. Bug修复
已知bug修复情况如下,发现了代码bug的看官也可以给我反馈,谢谢~~~
1,对于ListView的下拉刷新,当启用滚动到底自动加载时,如果footer由隐藏变为显示时,出现显示异常的情况
这个问题已经修复了,修正的代码如下:
PullToRefreshListView#setScrollLoadEnabled方法,修正后的代码如下:
[java] @Override&&public&void&setScrollLoadEnabled(boolean&scrollLoadEnabled)&{&&&&&&if&(isScrollLoadEnabled()&==&scrollLoadEnabled)&{&&&&&&&&&&return;&&&&&&}&&&&&&&&&&&&super.setScrollLoadEnabled(scrollLoadEnabled);&&&&&&&&&&&&if&(scrollLoadEnabled)&{&&&&&&&&&&//&设置Footer&&&&&&&&&&if&(null&==&mLoadMoreFooterLayout)&{&&&&&&&&&&&&&&mLoadMoreFooterLayout&=&new&FooterLoadingLayout(getContext());&&&&&&&&&&&&&&mListView.addFooterView(mLoadMoreFooterLayout,&null,&false);&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&mLoadMoreFooterLayout.show(true);&&&&&&}&else&{&&&&&&&&&&if&(null&!=&mLoadMoreFooterLayout)&{&&&&&&&&&&&&&&mLoadMoreFooterLayout.show(false);&&&&&&&&&&}&&&&&&}&&}&&
LoadingLayout#show方法,修正后的代码如下:
[java] /**&&*&显示或隐藏这个布局&&*&&&*&@param&show&flag&&*/&&public&void&show(boolean&show)&{&&&&&&//&If&is&showing,&do&nothing.&&&&&&if&(show&==&(View.VISIBLE&==&getVisibility()))&{&&&&&&&&&&return;&&&&&&}&&&&&&&&&&&&ViewGroup.LayoutParams&params&=&mContainer.getLayoutParams();&&&&&&if&(null&!=&params)&{&&&&&&&&&&if&(show)&{&&&&&&&&&&&&&&params.height&=&ViewGroup.LayoutParams.WRAP_CONTENT;&&&&&&&&&&}&else&{&&&&&&&&&&&&&&params.height&=&0;&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&requestLayout();&&&&&&&&&&setVisibility(show&?&View.VISIBLE&:&View.INVISIBLE);&&&&&&}&&}&&在更改LayoutParameter后,调用requestLayout()方法。
图片旋转兼容2.x系统
我之前想的是这个只需要兼容3.x以上的系统,但发现有很多网友在使用过程中遇到过兼容性问题,这次抽空将这个兼容性一并实现了。
& & & &onPull的修改如下:
[java] @Override&&public&void&onPull(float&scale)&{&&&&&&if&(null&==&mRotationHelper)&{&&&&&&&&&&mRotationHelper&=&new&ImageViewRotationHelper(mArrowImageView);&&&&&&}&&&&&&&&&&&&float&angle&=&scale&*&180f;&//&SUPPRESS&CHECKSTYLE&&&&&&mRotationHelper.setRotation(angle);&&}&&
ImageViewRotationHelper主要的作用就是实现了ImageView的旋转功能,内部作了版本的区分,实现代码如下:
[java] /**&&&&&&*&The&image&view&rotation&helper&&&&&&*&&&&&&&*&@author&lihong06&&&&&&*&@since&&&&&&&*/&&&&&&static&class&ImageViewRotationHelper&{&&&&&&&&&&/**&The&imageview&*/&&&&&&&&&&private&final&ImageView&mImageV&&&&&&&&&&/**&The&matrix&*/&&&&&&&&&&private&Matrix&mM&&&&&&&&&&/**&Pivot&X&*/&&&&&&&&&&private&float&mRotationPivotX;&&&&&&&&&&/**&Pivot&Y&*/&&&&&&&&&&private&float&mRotationPivotY;&&&&&&&&&&&&&&&&&&&&/**&&&&&&&&&&*&The&constructor&method.&&&&&&&&&&*&&&&&&&&&&&*&@param&imageView&the&image&view&&&&&&&&&&*/&&&&&&&&&&public&ImageViewRotationHelper(ImageView&imageView)&{&&&&&&&&&&&&&&mImageView&=&imageV&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&/**&&&&&&&&&&*&Sets&the&degrees&that&the&view&is&rotated&around&the&pivot&point.&Increasing&values&&&&&&&&&&*&result&in&clockwise&rotation.&&&&&&&&&&*&&&&&&&&&&*&@param&rotation&The&degrees&of&rotation.&&&&&&&&&&*&&&&&&&&&&*&@see&#getRotation()&&&&&&&&&&*&@see&#getPivotX()&&&&&&&&&&*&@see&#getPivotY()&&&&&&&&&&*&@see&#setRotationX(float)&&&&&&&&&&*&@see&#setRotationY(float)&&&&&&&&&&*&&&&&&&&&&*&@attr&ref&android.R.styleable#View_rotation&&&&&&&&&&*/&&&&&&&&&&public&void&setRotation(float&rotation)&{&&&&&&&&&&&&&&if&(APIUtils.hasHoneycomb())&{&&&&&&&&&&&&&&&&&&mImageView.setRotation(rotation);&&&&&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&if&(null&==&mMatrix)&{&&&&&&&&&&&&&&&&&&&&&&mMatrix&=&new&Matrix();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&计算旋转的中心点&&&&&&&&&&&&&&&&&&&&&&Drawable&imageDrawable&=&mImageView.getDrawable();&&&&&&&&&&&&&&&&&&&&&&if&(null&!=&imageDrawable)&{&&&&&&&&&&&&&&&&&&&&&&&&&&mRotationPivotX&=&Math.round(imageDrawable.getIntrinsicWidth()&/&2f);&&&&&&&&&&&&&&&&&&&&&&&&&&mRotationPivotY&=&Math.round(imageDrawable.getIntrinsicHeight()&/&2f);&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mMatrix.setRotate(rotation,&mRotationPivotX,&mRotationPivotY);&&&&&&&&&&&&&&&&&&mImageView.setImageMatrix(mMatrix);&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&}&&
最核心的就是,如果在2.x的版本上,旋转ImageView使用Matrix。
PullToRefreshBase构造方法兼容2.x
在三个参数的构造方法声明如下标注:
& & @SuppressLint("NewApi")
& & @TargetApi(Build.VERSION_CODES.HONEYCOMB)
大家如果还有什么问题,欢迎留言~~~
上一篇下一篇
6天前 17:13发表
楼主,我已经将你的框架布局到我的项目中,我发现有个问题,我若是使用的ListView不是用代码new出来的,而是从xml文件中定义的,就会出现,上拉刷新是可以了,但是下拉加载更多的时候,数据是加载进来了,不过那个Footer看不到布局,不知道是什么情况?65楼
6天前 13:29发表
很有用的64楼
大神,数据为空或不超过屏幕高度时,如何隐藏下方的“加载更多”啊?63楼
楼主,项目需要急需你的源代码,求帮忙发到行么?谢谢!在线等。。。62楼
楼主,能不能发一份完善版的源码给我呢?在此谢过博主了,俺的邮箱:
谢谢啦61楼
没到顶就开始往下拉,拉不动!有没有谁有更好的demo?60楼
下载下来学习一下59楼
下载下来的zip包 解压出错,楼主能给分源码?真心感谢了58楼
还可以就是代码写得有点多啊!57楼
这个支持网格吗56楼
能像自定义控件直接写在布局xml中吗?不new可以吗?55楼
楼主能否发份最新的源代码研究下,,3Q。54楼
楼主能否发份最新的源代码研究下。,不胜感激。3Q。53楼
创建一个滑动这能这样动态的new吗?mPullListView = new PullToRefreshListView(this);
不可以像自定义控件直接写在布局xml中吗?另外我按住上面写得做了 可是对Android2.3还是不兼容。麻烦您方便时候给我发一个兼容2.*的,邮箱感激不尽!!!52楼
你好,我用ListView的下拉刷新,刷新完成之后加载10条数据,然后调用setSelection(8)即定位到第9条数据。这样操作之后,在下拉的话,不显示上面的8条数据;只有拖动listview往上移动一下才能显示出那8条数据。请问这是怎么回事儿,谢谢啦Re:
回复tianyitianyi1:求解Re:
回复tianyitianyi1:帮博主回复了~~就是之前我回复的那个判断第一条是否显示出来的小bug,按我回复的方法修改就好了~Re:
回复f:完美解决,多谢!51楼
楼主,能给一份2.x版本的的demo吗?多谢了!邮箱50楼
楼主,能不能发我一份最新的到我邮箱 我在4.1编译 onPull方法会报错49楼
你好, 能不能发份DEMO给我呢 找的好痛苦,48楼
楼主,发一份最新的代码给我吧,邮箱谢谢了47楼
楼主能发一份兼容2.x系统的吗?谢谢Re:
回复qq_:请问你收到了兼容2x的代码吗?46楼
你好,我使用这个框架出现了一个问题,我在第一个Tab中使用了可下拉刷新的View,从其他Tab按Home键到桌面清理内存之后再进入app然后点击第一个Tab,这个View的headlayout自动显示出来了,而且上滑listview它不会随之上滑,但往下一拉就会触发刷新。。请问这是怎么回事啊45楼
mPullToRefreshListView.setPullLoadEnabled(true);mPullToRefreshListView.setScrollLoadEnabled(false);为什么我这样设置没办法实现上拉加载(不是自动加载)??44楼
大神,喜欢的代码,真心干净 整洁Re:
回复zqs:请问你有兼容2x的代码吗?可以发我一份吗?43楼
终于让我找到一个好的了。42楼
楼主我发现了一个问题,就是在刷新完一次后,立马又刷新一次会报错,等一会再刷没问题。会不会使加载没完成就又刷新了java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)主要是数组越界+headerview的错误Re:
回复alfonso12:检查这句话该(setScrollLoadEnabled())函数中这段代码是否存在:if (isScrollLoadEnabled() == scrollLoadEnabled) {
LZ可以给发一下最新的代码吗?,谢谢LZ!40楼
这个框架不错,能不能发份最新的源代码,,谢楼主。39楼
你好,我在onPullUpToRefresh回调里面直接将列表里面的数据修改之后,调用onPullUpRefreshComplete,但是这个onPullUpToRefresh会被调用两次是怎么回事呢38楼
你这个代码我能直接放到项目中使用吗?就是说你这个开源吗?37楼
能否给份 最新的代码参考下 。谢谢36楼
listview的上拉有效果,webview使用和listview同样的接口,实现后没反应,请问大神是怎么回事?35楼
为什么我切换到横屏状态,那个HeadView就一直显示在那里,怎么都隐藏不了,楼主知道这个bug吗Re:
回复LonelyRoamer:我是用在Fragment中嵌套的Fragment里用到的,出现了这个问题34楼
楼主如此牛逼,让我等情何以堪33楼
楼主可否发一份源码,32楼
楼主需要源码呀,谢谢,31楼
你好 怎么改可以设配2.1的30楼
这个用listview为什么最后一行不显示分割线?29楼
楼主GirdView刷新如何实现?28楼
APIUtils 在什么地方????Re:
回复tiddy8:这个是判断系统版本的,自己可以实现一个。Re:
回复leehong2005:可以发给我一份兼容2x的代码吗??我修改不成功还是报错了27楼
LZ的这个下拉刷新,比我见过的效果都要搞,流畅稳定。而且扩展起来也方便,能否发一份最新的源码给我仔细学习下,。谢谢了。26楼
怎么弄的啊25楼
这个小效果挺好的。24楼
支持一下,不支持android3.0一下版本,我修改了一下兼容安卓2.2的了Re:
回复w:能给一份2.x版本的的demo吗?多谢了!邮箱Re:
回复w:可以发给我一份吗?现在急用,修改后不成功。谢谢了··Re:
回复w:Re:
回复w:能发我一份吗?23楼
正在研究滑动加载,你的代码下载不下来。。还是自己搞搞吧22楼
我这个资源老是下载文件格式损坏,楼主能发一份吗给我吗,感谢 21楼
public void setHasMoreData(boolean hasMoreData) {
if (!hasMoreData)
if (null != mLoadMoreFooterLayout) {
mLoadMoreFooterLayout.setState(State.NO_MORE_DATA);
LoadingLayout footerLoadingLayout = getFooterLoadingLayout();
if (null != footerLoadingLayout) {
footerLoadingLayout.setState(State.NO_MORE_DATA);
if (null != mLoadMoreFooterLayout) {
mLoadMoreFooterLayout.setState(State.REFRESHING);
LoadingLayout footerLoadingLayout = getFooterLoadingLayout();
if (null != footerLoadingLayout) {
footerLoadingLayout.setState(State.REFRESHING);
搞定了19楼
求救哇,怎么改能在2.x上使用,看了下面的评论,结果你们群里聊去了18楼
我用不了,因为我想放图片和textview之类的控件,看你的用的是android 里面自带的R.layout.simple_list_item_1,我从数据库里面读出数据放到List&Map&String, Object&& list = new ArrayList&Map&String, Object&&();Map&String, Object& map = new HashMap&String, Object&();map.put("title",mStrings[i]);map.put("info",mStrings[i] );ist.add(map); 怎么去做,真新想用Re:
回复caishuang0921:兄弟,这个跟框架没关系了,你自己提供adapter呀。17楼
你好,我看了代码,我想把ArrayAdapter换成
SimpleAdapter sa = new SimpleAdapter(this, list,
R.layout.test, new String[]{"title","info"},
new int[]{R.id.title,});test 页面是layout里面的一个布局页&?xml version="1.0" encoding="utf-8"?&&LinearLayout xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" &
&LinearLayout android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"&
&TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textSize="22px" /&
&TextView android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textSize="13px" /& &/LinearLayout&&/LinearLayout&怎么换,不大会,请作者帮我看以下,谢谢.16楼
非常不错。。。。但是用怎么用不好啊15楼
你好,发现你的这个框架有个bug:判断ListView的第一项是否完全显示出来的条件不充分。导致listview显示出来的第一项的top值刚好大于零的时候下拉会刷新(因为不是listView的第一项,所以不应该刷新)。框架中的是:int mostTop = (mListView.getChildCount() & 0) ? mListView.getChildAt(0).getTop() : 0; if (mostTop &= 0) {
if (mListView.getChildCount() & 0 && mListView.getFirstVisiblePosition() == 0 && mListView.getChildAt(0).getTop() &= 0) {
回复f:谢谢你反馈问题,看仔细看了代码,的确是可能存在没到头就开始下拉的情况Re:
回复f:如果加上padding的情况下,还是会出现问题,应该在判断的时候加上paddingTopRe:
[java] if&(mListView.getChildCount()&&&0&&&&mListView.getFirstVisiblePosition()&==&0&&&&mListView.getChildAt(0).getTop()&&=&mListView.getPaddingTop())&{&&&&&&return&true;&&}&&Re:
回复f:这个框架的下拉刷新,你做出来了吗?参考参考。Re:
回复f:你的是对的,还应该判断first position == 0Re:
回复leehong2005:谢谢回复~Re:
我现在是这样判断的:[java] private&boolean&isFirstItemVisible()&{&&&&&&final&Adapter&adapter&=&mListView.getAdapter();&&&&&&&&if&(null&==&adapter&||&adapter.isEmpty())&{&&&&&&&&&&return&true;&&&&&&}&&&&&&&&int&mostTop&=&(mListView.getChildCount()&&&0)&?&mListView.getChildAt(0).getTop()&:&0;&&&&&&if&(mostTop&&=&0)&{&&&&&&&&&&return&true;&&&&&&}&&&&&&&&return&false;&&}&&Re:
回复leehong2005:你这不是又改回去了吗?14楼
下来学习下13楼
大神 为毛下载的注释是乱码呢Re:
回复yxnman:那是你的eclipse的编码没设置正确,应该是设置为UTF-8Re:
回复leehong2005:不好意思楼主
刚从新开了一下 可以啦
回复leehong2005:设置成UTF8了呀
可还是乱码的呢Re:
回复yxnman:应该是设置的问题,我的也是在eclipse里面写的,注释我是写的中文,没有问题的。12楼
有个小问题,如果第一次拉了不放开,再别外的一个高点处再拉,当前的VIEW 就跑上去了,个人觉得应该,不应该跑上去,应该按当前的位置继续往下显示,相同的滑动距离Re:
回复kingwild:不太明白你的意思,能否详细说明一下?11楼
webview的有没有实现上拉加载?好像只有下拉刷新。。10楼
哥们我运行了一下。安卓2.2的都不行。Re:
回复jiankeufo:哪个API不支持,报的什么错?能不能把log发上来一下。我最主要的目的是支持3.0以上的,但2.x理论上也应该支持呀。9楼
我最近也在研究“万能”的下拉刷新控件,看了你的代码,觉得写得很好;不过要是把处于正在刷新状态下的阻尼系数改为1的话就更好了.....Re:
回复sweetvvck:阻尼系数这个东西如果改为1的话,那么用户拉的时候会觉得下拉多少,画面向上移多少,感觉不到有一点阻力的效果。不过这东西都是可以根据需求来调节,当然,也可以开放成API让调用者来设置。8楼
很好,但是那个scorllView没有上拉刷新Re:
回复u:demo里面没有,但是框架是支持的。应该是demo里面把上拉加载给禁用了。可以通过接口打开7楼
good ! 能加好友吗?Re:
回复idofzhan:可以呀,怎么加??6楼
回复chiwenheng2078:哦,那你是有更好的,能不能分享一下?5楼
写的好 易懂Re:
回复liu100m:谢谢了。其实要把一个复杂的点描述清楚是很难的,所以还是要结合代码自己来看,希望文章和代码对你有帮助4楼
怎么我下载不了啊?Re:
回复u:不应该呀3楼
AdapterView的时候有一个严重的问题就是AdapterView向上滚动至顶部必须手指离开再次下拉才能拉出head。这种情况最好还是重写ListVIew来实现下拉Re:
回复carrey1989:你说的这个问题我知道。因为事件在滑动时事件是交给listview来处理,外层的container无法处理。如果让listview添加header的话,肯定是通用不了了。这个问题就关键是如何取舍,还是为了达到你所说的效果会给产品带来多大的收益,有多少用户关心这种细节体验。我想这种问题是需要有一个更加合理全面的考虑,才能做出一个正确的取舍,你说呢?Re:
回复leehong2005:楼主,你可以参考这个做法,他也是用的listView外的一个视图,但是可以实现没到顶也可以下拉,并不是headView:http://blog.csdn.net/guolin_blog/article/details/92555752楼
非常好。可扩展性很强。Re:
回复woyaowenzi:你看代码了吗?就说强!!!Re:
回复leehong2005:只看接口和继承关系,以及View的填充等就知道了。Re:
回复woyaowenzi:只有你懂我,嘎嘎。Re:
回复leehong2005:擦。真是肉麻啊。。。1楼
您的文章已被推荐到博客首页和个人页侧边栏推荐文章,感谢您的分享。Re:
回复suannai0314:为什么总是不能推荐到首页。Re:
回复leehong2005:什么意思?不是推荐了吗?Re:
回复suannai0314:哪里能找到?我怎么没看到呢?Re:
回复leehong2005:http://blog.csdn.net/这里,上边最新精华博文推荐这个地方
发表评论用 户 名:ilvu999评论内容:&&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:158493次积分:2763分排名:第4225名原创:102篇转载:1篇译文:0篇评论:375条
(1)(2)(1)(1)(1)展开
楼主,我已经将你的框架布局到我的项目中,我发现有个问题,我若是使用的ListView不是用代码new...
我有时候也会出现闪退,但是程序还是会继续自动运行,是个神马情况
大神 我不懂C++ 您能封装为COM 或者可以给其他的语言调用的 dll吗 C# 我的QQ邮箱 14...
@lijunhuihubei:最近比较忙,抽不出时间来整理和沉淀,这也不是好事。
请问还有框架设计的更新内容吗?期待更多
求一份源代码学习用nsa_
@Adam_Santiago:路径不对吧
拜托,我可以也要一份吗?
400-600-2320京&ICP&证&070598&号北京创新乐知信息技术有限公司 版权所有江苏乐知网络技术有限公司 提供商务支持Copyright ? , CSDN.NET, All Rights Reserved&
发表评论:
馆藏&18954
TA的最新馆藏[转]&}

我要回帖

更多关于 网站源码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信