PulltoRefreshview是我在CSDN上下的,据说来源是这里,这里简单说明下 http://gundumw100.iteye.com/blog/1764763
这个控件支持多种控件的上啦下拉事件,非常不错,但同时也有一些缺点,需要进行优化
优化1,添加上拉与下拉开关,当我们不需要上拉下拉的时候屏蔽事件
在类中申明变量
private ActivityHelper mhelper;//自定义的类,主要用于分辨率转换等操作
private boolean canpulltoload=false,canpulltore=false;//定义变量,控制上拉下拉开关
<span style="white-space:pre"> </span>//定义set get方法
<span style="white-space:pre"> </span>public void setCanpulltoload(boolean canpulltoload) {
<span style="white-space:pre"> </span>this.canpulltoload = canpulltoload;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public void setCanpulltore(boolean canpulltore) {
<span style="white-space:pre"> </span>this.canpulltore = canpulltore;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>//修改onTouchEvent中的<pre name="code" class="java"><span> </span>//<span>ACTION_MOVE</span>方法 实现加载开关
<span style="white-space:pre"> case MotionEvent.ACTION_MOVE:
<span style="white-space:pre"> </span>int deltaY = y - mLastMotionY;
<span style="white-space:pre"> </span>if (mPullState == PULL_DOWN_STATE&&canpulltore) {//执行下拉
<span style="white-space:pre"> </span>headerPrepareToRefresh(deltaY);
<span style="white-space:pre"> </span>// setHeaderPadding(-mHeaderViewHeight);
<span style="white-space:pre"> </span>} else if (mPullState == PULL_UP_STATE&&canpulltoload) {//执行上拉
<span style="white-space:pre"> </span>footerPrepareToRefresh(deltaY);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>mLastMotionY = y;
<span style="white-space:pre"> </span>break;</span>
</pre></p><p></p>优化2 ,修改事件判定,防止内容无法点击<p>在使用该控件的过程中,发现在高分屏中,很难点击内容的情况</p><p>解决方案</p><p>修改判定条件,</p><p>修改方法isRefreshViewScroll</p><p><pre name="code" class="html">
deltaY >0修改为
deltaY > mhelper.convertDpToPixel(10, context)
同理
deltaY<0修改为
deltaY < - mhelper.convertDpToPixel(10, context)
经过测试问题解决