具有弹性效果的ListView
Android默认的ListView在滚动到顶端或底端,没有很好的提示,下面通过源码来实现弹性效果。
ListView中有一个控制滑动到边缘的处理方法:
protected boolean overScrollBy(int deltaX, int deltaY,int scrollX, int scrollY,int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY,boolean isTouchEvent)
其中参数maxOverScrollX---Numbers of piexls to overscroll by in either direction along the Y axis.默认为0,修改这个数值就可以实现滑动到顶端的弹性效果。
//为满足多分辨率的需求,通过屏幕的density来计算maxOverScrollY的具体DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();float density = metrics.density;mMaxOverDistance = (int) (density * mMaxOverDistance);
完整的工程
FlexibleListView.java
package sunny.example.ahfourflexiblelistviewtest;import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.widget.ListView;@SuppressLint("NewApi")
public class FlexibleListView extends ListView {private static int mMaxOverDistance = 50;//将滑动距离改为50,默认为0,无弹性效果private Context mContext;public FlexibleListView(Context context, AttributeSet attrs,int defStyleAttr) {super(context, attrs, defStyleAttr);this.mContext = context;initView();}public FlexibleListView(Context context, AttributeSet attrs) {super(context, attrs);this.mContext = context;initView();}public FlexibleListView(Context context) {super(context);this.mContext = context;initView();}private void initView() {//为满足多分辨率的需求,通过屏幕的density来计算maxOverScrollY的具体DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();float density = metrics.density;mMaxOverDistance = (int) (density * mMaxOverDistance);}@Overrideprotected boolean overScrollBy(int deltaX, int deltaY,int scrollX, int scrollY,int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY,boolean isTouchEvent) {return super.overScrollBy(deltaX, deltaY,scrollX, scrollY,scrollRangeX, scrollRangeY,maxOverScrollX, mMaxOverDistance,isTouchEvent);}
}
FlexibleListViewTest.java
package sunny.example.ahfourflexiblelistviewtest;
//具有弹性的ListView
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;public class FlexibleListViewTest extends Activity {private FlexibleListView mFlexibleListView;private String[] data = new String[30];@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.flexible);for (int i = 0; i < 30; i++) {data[i] = "" + i;}mFlexibleListView = (FlexibleListView) findViewById(R.id.flexible_listview);mFlexibleListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data));}
}
flexible.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><sunny.example.ahfourflexiblelistviewtest.FlexibleListViewandroid:id="@+id/flexible_listview"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>
具有弹性效果的ListView相关推荐
- 安卓弹性刷新通用版—支持任何view上下刷新均有弹性效果
做安卓开发的朋友们,不知道你们会不会经常用遇到这样的情景,某个做所畏的产品设计的sb,拿着iphone来看给你看,说看苹果的这个效果多好,看那个效果多好.苹果也比安卓清晰多了,你能不能也把咱们的安卓应 ...
- android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码
用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...
- 让View具有弹性效果的动画——SpringAnimation
Android动画和Transition系列文章 初识属性动画--使用Animator创建动画 再谈属性动画--介绍以及自定义Interpolator插值器 三谈属性动画--Keyframe以及Vie ...
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
Android实训案例(三)--实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果! 感叹离春节将至,也同时感叹时间不等人,一年又一年,可是我依然是android道路上的小菜鸟,这篇讲 ...
- 仿微信图片缩放效果以及listview反弹效果
这些效果都是基于一些前辈的基础上进行修改的,以满足自己想要的效果,在此对几位前辈表示感谢. 废话不多说了,先上效果图. 因为都是一些动画,图片可能无法看出效果,先说一下主要功能. 1.listview ...
- 仿Expandablelistview效果的ListView(加入了子列表渐入渐出的动画)
新来的项目要求第一眼一看就是用Expandablelistview.效果图如下: 其实本来希望直接使用Expandablelistview的,但是需求Expandablelis ...
- Android初级,实现网易云音乐歌曲列表界面效果,播放界面效果,ListView,ViewPager方法详解
初学Android初级,第一篇博客文章,如有错误,还望批评指正! 本文主要内容以网易云音乐歌曲列表界面效果代码,播放音乐界面效果代码为主,并将ListView和ViewPager作为实现界面滑动功能的 ...
- 仿支付宝账单的效果(listview分组 )
最近公司要 添加类似支付宝账单 的listview分组顶部悬浮 的效果,其实总的实现思想很简单.由于 后台给的数据 的不同 ,可能处理的方式也不一样. 接下来咱们就一起来探讨研究一下. 首先 ,自定 ...
- android 列表回弹效果,Android ListView ScrollView回弹效果
ios中对可以滚动的视图都在系统层面上实现了触碰到边缘的阻尼回弹效果,用户一看便知自己的操作已经到了边界.android中也有类似的方案,不过当到达边界的时候不是用阻尼的方式,而是逐渐显示一个渐变颜色 ...
最新文章
- 函数计算工具链新成员 —— Fun Local 发布啦
- 菲律宾政府网站被黑!
- 网络演算(Networkcalculus)
- mysql数据库备份shell_mysql数据库备份shell脚本分享
- 寺庙的纪律性也让我颇有感触
- SpringMVC学习--springmvc原理
- 7 Papers Radios | 陈丹琦关系抽取新SOTA;上海交大医疗版MNIST数据集
- linux编译gdal geos,GDAL编译支持GEOS
- uniapp接收服务器消息,uniapp如何请求服务器数据
- pixel cra_cra到pwa
- 使用第三方打码平台图鉴识别滑动验证码模拟登录
- 高德citycode和国家citycode编码转换
- 辨别虚假高音质(320k/Ape/Flac)的音乐文件
- 游戏帧同步和状态同步
- 利用pandas进行简单数据分析-医院销售数据分析案例
- 分享百度文库推广技巧分享
- E.A. Guillemin 吉耶曼统一古典电路理论的人
- 台式计算机用电量是多少,台式计算机的功率是多少?台式计算机多少电量[详细介绍]...
- oracle 一行变多行
- python界面开发工具哪个好_python图形界面开发用什么
热门文章
- 使用HMAC(Play 2.0)保护REST服务
- php 按钮的属性值,HTML button标签的属性有哪些
- shell 脚本中特殊变量
- mysql 触发器计算总价,mysql’插入’触发器根据其他字段计算字段
- Maven定制化打包后的包名(加入时间戳)
- 一个dsp最小系统至少要有_DSP最小系统电路设计
- bpmn2 vue 设计器_vue项目中使用bpmn-基础篇
- mysql 8.0用doc修改密码_MYSQL8.0修改密码流程
- python列表中随机两个_随机化两个列表并在python中维护顺序
- arcgis 出图背景_ArcGIS空间制图分析视频教程(二狮兄出品)含ArcMap