最新项目中有展示类似淘宝商品详情的功能,主要实现 向上拉查看详情,百度一搜,发现有大神已经实现这个效果了
http://blog.csdn.net/zhongkejingwang/article/details/38656929
写的非常棒,用2个ScrollView 实现上拉查看详情的功能
但是发现在用在我的项目有点问题,有些小的需求没有实现,所以就在这位大神的基础上添加了简单的功能
1. 事件回调, 第二页完全显示出来的回调,可以用来加载数据
2. 事件回调, 当用户滑到第一个ScrollView底部的时候,继续上拉的时候,跟用户提 ------- 继续上拉,加载更多
3. 事件回调, 当用户滑到第一个ScrollView底部的时候,继续上拉之后,在放开屏幕,第一个ScrollView回滚回原先的位置,这是需要修改提示----- 上拉,可以加载更多
4. 需改之前代码可能出现错误的地方
5. 增加简单的注释
修改后的代码如下:
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import java.util.Timer;
import java.util.TimerTask;
public class ScrollViewContainer extends RelativeLayout {
/**
* 自动上滑
*/
public static final int AUTO_UP = 0;
/**
* 自动下滑
*/
public static final int AUTO_DOWN = 1;
/**
* 动画完成
*/
public static final int DONE = 2;
/**
* 动画速度
*/
public static final float SPEED = 10.0f;
private boolean isMeasured = false;
/**
* 用于计算手滑动的速度
*/
private VelocityTracker vt;
private int mViewHeight;
private int mViewWidth;
private View topView;
private View bottomView;
private boolean canPullDown;
private boolean canPullUp;
private int state = DONE;
/**
* 记录当前展示的是哪个view,0是topView,1是bottomView
*/
private int mCurrentViewIndex = 0;
/**
* 手滑动距离,这个是控制布局的主要变量
*/
private float mMoveLen;
private MyTimer mTimer;
private float mLastY;
/**
* 用于控制是否变动布局的另一个条件,mEvents==0时布局可以拖拽了,mEvents==-1时可以舍弃将要到来的第一个move事件,
* 这点是去除多点拖动剧变的关键
*/