使用ListView将位置拖到顶部和底部默认是没有回弹效果的,为了增加这个效果,方法如下:

1、开启overScrollMode为always

在布局中 android:overScrollMode="always"

或在代码中 setOverScrollMode(View.OVER_SCROLL_ALWAYS);

2、继承listview 覆盖overScrollBy方法,并且利用反射机制修改阴影效果为透明

public class PullListview extends ListView {

private static final int MAX_Y_OVERSCROLL_DISTANCE = 100;

private Context mContext;

private int mMaxYOverscrollDistance;

public PullListview(Context context) {

super(context);

mContext = context;

initPullListview();

}

public PullListview(Context context, AttributeSet attrs) {

super(context, attrs);

mContext = context;

initPullListview();

}

public PullListview(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

mContext = context;

initPullListview();

}

private void initPullListview() {

// get the density of the screen and do some maths with it on the max

// overscroll distance

// variable so that you get similar behaviors no matter what the screen

// size

final DisplayMetrics metrics = mContext.getResources()

.getDisplayMetrics();

final float density = metrics.density;

mMaxYOverscrollDistance = (int)(density * MAX_Y_OVERSCROLL_DISTANCE);

// this.setOverScrollMode(View.OVER_SCROLL_ALWAYS);

try {

Class < ? > c = (Class < ? > ) Class.forName(AbsListView.class.getName());

Field egtField = c.getDeclaredField("mEdgeGlowTop");

Field egbBottom = c.getDeclaredField("mEdgeGlowBottom");

egtField.setAccessible(true);

egbBottom.setAccessible(true);

Object egtObject = egtField.get(this); // this 指的是ListiVew实例

Object egbObject = egbBottom.get(this);

// egtObject.getClass() 实际上是一个 EdgeEffect 其中有两个重要属性 mGlow mEdge

// 并且这两个属性都是Drawable类型

Class < ? > cc = (Class < ? > ) Class.forName(egtObject.getClass()

.getName());

Field mGlow = cc.getDeclaredField("mGlow");

mGlow.setAccessible(true);

mGlow.set(egtObject, new ColorDrawable(Color.TRANSPARENT));

mGlow.set(egbObject, new ColorDrawable(Color.TRANSPARENT));

Field mEdge = cc.getDeclaredField("mEdge");

mEdge.setAccessible(true);

mEdge.set(egtObject, new ColorDrawable(Color.TRANSPARENT));

mEdge.set(egbObject, new ColorDrawable(Color.TRANSPARENT));

} catch (Exception e) {

e.printStackTrace();

}

}

@SuppressLint("NewApi")

@Override

protected boolean overScrollBy(int deltaX, int deltaY, int scrollX,

int scrollY, int scrollRangeX, int scrollRangeY,

int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {

// This is where the magic happens, we have replaced the incoming

// maxOverScrollY with our own custom variable mMaxYOverscrollDistance;

return super.overScrollBy(deltaX, deltaY, scrollX, scrollY,

scrollRangeX, scrollRangeY, maxOverScrollX,

mMaxYOverscrollDistance, isTouchEvent);

}

}

android 阻尼回弹,Android ListView实现阻尼回弹效果 并去除边缘阴影相关推荐

  1. ListView 实现阻尼回弹效果 并去除边缘阴影

    我们使用ListView将位置拖到顶部和底部默认是没有回弹效果的,为了增加这个效果,方法如下: 1.开启overScrollMode为always 在布局中 android:overScrollMod ...

  2. Android取消RecyclerView、ListView、ScrollView、HorizontalScrollView滑动到边缘闪现灰白色水波纹动画

    Android取消RecyclerView.ListView.ScrollView.HorizontalScrollView滑动到边缘闪现灰白色水波纹动画 标准的Android RecyclerVie ...

  3. Android自定义View之ListView实现时间轴效果:我只是个送快递的。

    先上效果图: 实现时间轴的原理 listview的基本使用,相信大家都很熟悉.先在layout下新建一个xml布局文件,对应一个子项的listView的显示内容.在上面的图我们可以看到,每一项都是 有 ...

  4. android自带下拉阻尼动画,Android实现简单的下拉阻尼效应示例代码

    OS的下拉上拉都会出现一个很玄的动态效果.在Android中,虽然可以实现类似的效果,但有点不同的是,如果调用overScrollBy来实现类似的阻尼效应的话,最顶部会出现一片亮的区域,让人感觉不是很 ...

  5. android 横向滑动 回弹,android ScrollView水平滑动回弹

    在研究了View的一些属性之后做了个Scroll的水平滑动回弹. 效果图: 主要代码: import android.content.Context; import android.graphics. ...

  6. android 底部回弹,Android View滚动、拉伸到顶/底部弹性回弹复位

     <Android View滚动.拉伸到顶/底部弹性回弹复位> 我在上一篇文章介绍了如何实现一个Android ListView拉到顶/底部后,像橡皮筋一样弹性回弹复位(<And ...

  7. Android 模仿QQ抢红包 listView实现

    猴年猴赛雷啊各位,今天没吃药我感觉自己萌萌哒! qq和微信和支付宝红包大战,不知道各位的战绩是多少嘞? 反正我qq抢到的都是气泡.因为太不爽,所以自己写一个下拉抢红包自己玩(自己跟自己玩). 先来看效 ...

  8. android 图片列表,Android 列表使用(ListView GridView Gallery图片计时滚动)

    ListView 作用: 1.将数据填充到布局. 2.处理用户的选择点击等操作. 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAd ...

  9. [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6641794.html [Android]使用RecyclerV ...

  10. Android之设置ListView数据显示的动画效果

    效果图: 平时我们要实现ListView数据显示时的动画效果,可以使用LayoutAnimationController为ListView设置动画效果,并通过ListView的setLayoutAni ...

最新文章

  1. 使用java.util.Timer来周期性的执行制定的任务
  2. js中replace未定义_js中replace的用法
  3. Non-Blind图像反卷积论文整理
  4. QT的QDateTimeAxis类的使用
  5. vim插件自动补齐_VIM自动补全插件:deoplete
  6. Oracle归档目录 和 DB_RECOVERY_FILE_DEST
  7. Sourcing Cockpit: 2. Demo of Service Purchase Order
  8. 01: MySql简介
  9. r语言 tunerf函数_R语言︱常用统计方法包 机器学习包(名称、简介)
  10. Linux 命令之 type -- 显示指定命令的类型
  11. MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句
  12. 「十年老测试」测试员的职场之路
  13. Java——字符编码详细解释
  14. GPUImageMovieWriter录制视频问题
  15. mysql 实现row_number_MySQL实现ROW_NUMBER()
  16. 503.下一个更大元素II(力扣leetcode) 博主可答疑该问题
  17. PHP(阿里云短信验证码)
  18. wordpress之模板汉化(poedit的使用技巧 及 .po .mo 批量生成技术)
  19. cannot allocate memory in static TLS block问题记录
  20. ArcGIS—数据类型(1):Coverage数据

热门文章

  1. 锂电池基本原理解析:充电及放电机制
  2. 百度收录提交软件-百度批量收录提交入口工具免费
  3. 看《岭南大医生》羽素与专家共揭痘痘背后的问题
  4. sql中字符串转换成日期
  5. 移动端网页点击链接出现蓝色背景如何解决
  6. mysql 分组查询 语句_MySQL分组查询
  7. 【2022 年第十二届 MathorCup杯数学建模】D 题 移动通信网络站址规划和区域聚类问题 赛后总结、论文及代码
  8. css重复,css3重复渐变效果
  9. JavaScript Debugger 原理
  10. 产品经理的素质能力模型