有弹性的ListView

package com.weichuang.china.video.view;import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ListView;public class MyListView extends ListView {private Context context;private boolean outBound = false;private int distance;private int firstOut;  public MyListView(Context context, AttributeSet attrs) {super(context, attrs);this.context = context;}public MyListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);this.context = context;}public MyListView(Context context) {super(context);this.context = context;}GestureDetector gestureDetector = new GestureDetector(new OnGestureListener() {public boolean onSingleTapUp(MotionEvent e) {// TODO Auto-generated method stubreturn false;}public void onShowPress(MotionEvent e) {// TODO Auto-generated method stub}public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {int firstPos = getFirstVisiblePosition();int lastPos = getLastVisiblePosition();int itemCount = getCount();// outbound Topif (outBound && firstPos != 0 && lastPos != (itemCount - 1)) {scrollTo(0, 0);return false;}View firstView = getChildAt(firstPos);if (!outBound)firstOut = (int) e2.getRawY();if (firstView != null&& (outBound || (firstPos == 0&& firstView.getTop() == 0 && distanceY < 0))) {// Record the length of each slidedistance = firstOut - (int) e2.getRawY();scrollTo(0, distance / 2);return true;}if (lastPos != (itemCount - 1))return false;View lastView = getChildAt(lastPos - firstPos);int GridHeight = getHeight(); if (lastView != null && (outBound || ((lastView.getBottom() + 8) >= GridHeight && distanceY > 0))) { distance = firstOut - (int) e2.getRawY();scrollTo(0, distance);return true;} return false;}public void onLongPress(MotionEvent e) {// TODO Auto-generated method stub}public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {// TODO Auto-generated method stubreturn false;}public boolean onDown(MotionEvent e) {// TODO Auto-generated method stubreturn false;}});@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {int act = event.getAction();if ((act == MotionEvent.ACTION_UP || act == MotionEvent.ACTION_CANCEL)&& outBound) {outBound = false;}if (!gestureDetector.onTouchEvent(event)) {outBound = false;} else {outBound = true;}Rect rect = new Rect();getLocalVisibleRect(rect);TranslateAnimation am = new TranslateAnimation(0, 0, -rect.top, 0);am.setDuration(300);startAnimation(am);scrollTo(0, 0);return super.dispatchTouchEvent(event);}
}

有弹性的ListView相关推荐

  1. Android自定义控件(三)——有弹性的ListView

    上一次我们试验了有弹性的ScrollView.详情 这一次,我们来试验有弹性的ScrollView. 国际惯例,效果图: 主要代码: [java] view plaincopy import andr ...

  2. android 自定义弹性的ListView

    public class MyListView extends ListView implements OnScrollListener {private Scroller mScroller;pri ...

  3. 具有弹性效果的ListView

    Android默认的ListView在滚动到顶端或底端,没有很好的提示,下面通过源码来实现弹性效果. ListView中有一个控制滑动到边缘的处理方法: protected boolean overS ...

  4. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 近期也是比較迷茫.可是有一点点还是要坚持的,就是学习了.近期离职了,今天也是继续温习第四章ListView,也拖了事实上也挺久的了,lis ...

  5. 【学习笔记】ListView初识

    2019独角兽企业重金招聘Python工程师标准>>> 处理空ListView 之前在做空数据的时候,会在ListView同界面再放一个其它控件,然后在ListView数据为空时,将 ...

  6. Android群英传知识点回顾——第四章:ListView常用优化技巧

    Android群英传知识点回顾--第四章:ListView常用优化技巧 知识点目录 4.1 ListView常用优化技巧 4.1.1 使用ViewHolder模式提高效率 4.1.2 设置项目间分割线 ...

  7. Android群英传笔记——摘要,概述,新的出发点,温故而知新,能够为师矣!

    Android群英传笔记--摘要.概述,新的出发点,温故而知新.能够为师矣! 当工作的越久,就越感到力不从心了,基础和理解才是最重要的,所以买了两本书,医生的<Android群英传>和主席 ...

  8. android listview 自定义控件,Android 自定义弹性ListView控件实例代码(三种方法)

    关于在Android中实现ListView的弹性效果,有很多不同的方法,网上一搜,也有很多,下面贴出在项目中经常用到的两种实现ListView弹性效果的方法(基本上拿来就可以用),供大家参考: 弹性L ...

  9. android 高仿苹果listview,高仿 MIUI 弹性拉伸 view ,支持RecyclerView, ListView, GridView, ScrollView ......

    首先申明:这个库是基于 Over-Scroll Elasticity 支持 Android 原生控件 RecyclerView, ListView, GridView, ScrollView - 这个 ...

最新文章

  1. NYOJ1071 - 不可以!
  2. php数组合并字段,PHP数组按要求合并
  3. 冒泡排序法:一维数组 (最费内存资源的排序法)
  4. ListView上拉加载,下拉刷新 PullToRefresh的使用
  5. ES6学习(六)—函数的扩展
  6. vim粘贴代码格式变乱
  7. charles 批量重复请求/重复发包工具
  8. win10 开机黑屏时间长 联想y470解决方案
  9. 电子或通信领域当前的主流技术及其社会需求调查
  10. 几何分布GeometricDistribution
  11. 计算机教师个人总结及自评,教师个人总结及自评
  12. 输出100以内不能被7整除的数
  13. 关于安装wordcloud库的那些事
  14. 【 newcoder 】幼儿园战争 【并查集+删并查】
  15. kali 中 MongoDB安装
  16. 便签 java_基于安卓Android的便签笔记APP设计(Android studio)
  17. Plantuml类图用法
  18. Gretna网络分析之先验知识
  19. ospf理论概述.md
  20. OCR应用(证件识别、文档识别)

热门文章

  1. RTEMS 4.9.4 bootcard.c 中的 boot_card 函数分析
  2. 如何导出NK.bin中的内容
  3. IBM小型机维护文档
  4. linux服务器安全
  5. MPLS 成为连接到云的绝佳方法的4个原因
  6. BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ)
  7. P1875 佳佳的魔法药水 (最短路,DP)
  8. Hibernate的批量查询
  9. vue-video-player集成videojs-contrib-hls实现.m3u8文件播放
  10. 计算机●编程语言●JAVA