弹性ScrollView(备忘)
来源:互联网 发布:淘宝培训课件 编辑:程序博客网 时间:2024/05/17 11:59
备忘,加深记忆
publivc class ReboundScrollView extends ScrollView{ //是否在顶部 private isTop=falsle; //是否在底部 private isMoved=false; //按下时的y坐标 private inr startY; private Retc retc=new Retc(); private View contentView; public ReboundScrollView(Context context) { super(context); } public ReboundScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void onFinishInFilter(){ //scrollView内只有一个子view if(getChildCount>0){ contentView=getChildAt(0); } } @Override public void onLayout(){ if(contentView!=null){ //记录初始位置 rect.set(contentView.getLeft(),contentView.getTop(), contentView.getRight(),contentView.getBottom); } } @Override pubic boolean dispatchTouchEvent(MotionEvent ev){ if(contentView==null) return super.dispatchTouchEvnet(ev); int action =ev.getAction(); switch(action){ case MotionEvent.ACTION_DOWN: startY=(int)ev.getY(); isTop=getIsTop(); isBottom=getIsBottom(); break; case MotionEvnet.ACTION_UP: if(!isMoved) break; //定义恢复动画 TranslateAnimation anim=new TranslateAnimation(0,0, contentView.getTop(),retc.top); contentView.setDuration(300); contentView.startAnimation(anim); //恢复到初始位置 contentView.layout(retc.left,retc.top,retc.left,retc.botttom); isMoved=false; isTop=false; isBottom=false; break; case MotionEvent.ACTION_MOVE: //未到顶部且未到底部 if(!isTop&&!isBottom){ startY=ev.getY(); isTop=getIsTop(); isBottom=getIsBottom(); break; } int dy=(int)(ev.getY()-startY)*0.5;//滑动手指移动的一半的距离 //判断是否需要移动 boolean shouldMove= isTop&&dy>0||isBottom&&dy<0||isTop&&isBottom; if(shouldMove){ contentView.layout(rect.getLeft(),rect.getTop()+dy, rect.getRight(),rect.getBottom()+dy); isMoved=true; } break; } } private boolean GetIsTop(){ // 距离顶部距离为0 或内容的高度小于scrollview的高度加距离顶部的距离, //也就是contentview不能填满scrollview return getScrollY()=0||content.getHeight()<getHeight+getScrollY(); } private boolean GetIsBottom(){ return content.getHeight()<=getHeight+getScrollY(); } }
0 0
- 弹性ScrollView(备忘)
- 弹性ScrollView
- 弹性scrollview
- 弹性SCrollView
- 弹性ScrollView
- 自定义ScrollView实现弹性ScrollView
- Android 弹性ScrollView
- 仿IOS弹性ScrollView
- Android自定义弹性ScrollView
- 具有弹性的ScrollView
- android 弹性ScrollView
- 弹性scrollview的实现
- 优化版弹性ScrollView
- 自定义弹性的ScrollView
- 自定义弹性的ScrollView
- Android 弹性ScrollView
- 自定义scrollview弹性布局
- 自定义ScrollView实现弹性效果
- nginx+keepalive主从双机热备+自动切换解决方案
- Linux下Redis3.0.5的安装
- 第一次用android studio要设置的东西
- 正在用Wordpress做一个老外学中文的网站
- 现场总线can-bus简述丨现场总线can-bus入门
- 弹性ScrollView(备忘)
- Hadoop fs命令
- 73 Which two are the prerequisites to enable Flashback Data Archive? (Choose two.) A. Database must
- 高通工具SnapdragonProfiler的安装和基本使用说明
- activemq 消息选择器Selector
- 史上最全最强SpringMVC详细示例 实战
- mvn 冲突
- lstm 不错资料备份
- Copy And Strong