让ScrollView、ListView充满弹性

科技中介如何高效匹配技术供需?.docx 科技中介如何高效匹配技术供需? 立即下载
android默认的ScrollView、ListView在最顶端下拉或者最底端上拉的时候,都不会带有反弹效果,很生硬的让你不能继续拖动,记得不像iOS那样可以回弹,个人认为,iOS的交互还是略好一点,那么我们也来在Android下实现下这个功能。


先看下效果图:


修改一个值,让ScrollView、ListView充满弹性 - 第1张  | 游戏开发网-最好的游戏编程开发技术网站!


注:记得当时在android系统2.3前,默认的ScrollView、ListView都支持下拉回弹效果的,但后来被苹果买断版权。(记得大学时口袋里穷叮当响,用仅剩的560元买了个杂牌的android手机,那时的系统是2.3的,目前仍然用来测试各种布局和界面效果,里面的ScrollView、ListView是可以回弹的)


今天的目标是一句话实现ScrollView、ListView下拉回弹效果,如何去做呢?


先看下代码:





package com.xys.flexible;


import android.content.Context;


import android.util.AttributeSet;


import android.util.DisplayMetrics;


import android.widget.ScrollView;


public class FlexibleScrollView extends ScrollView {


private Context mContext;


private static int mMaxOverDistance = 50;


public FlexibleScrollView(Context context, AttributeSet attrs,


int defStyleAttr) {


super(context, attrs, defStyleAttr);


this.mContext = context;


initView();


}


public FlexibleScrollView(Context context, AttributeSet attrs) {


super(context, attrs);


this.mContext = context;


initView();


}


public FlexibleScrollView(Context context) {


super(context);


this.mContext = context;


initView();


}


private void initView() {


DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();


float density = metrics.density;


mMaxOverDistance = (int) (density * mMaxOverDistance);


}


@Override


protected 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);


}


}


其实我们虽然重写了ScrollView(或者ListView),但是只改了它的一个方法的一个值!


也就是将overScrollBy中的maxOverScrollY改成了我们自己写的值。


测试布局:




[html] view plaincopyprint?


修改一个值,让ScrollView、ListView充满弹性 - 第4张  | 游戏开发网-最好的游戏编程开发技术网站!


修改一个值,让ScrollView、ListView充满弹性 - 第5张  | 游戏开发网-最好的游戏编程开发技术网站!


<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”


xmlns:tools=”http://schemas.android.com/tools”


android:layout_width=”match_parent”


android:layout_height=”match_parent”


android:paddingBottom=”@dimen/activity_vertical_margin”


android:paddingLeft=”@dimen/activity_horizontal_margin”


android:paddingRight=”@dimen/activity_horizontal_margin”


android:paddingTop=”@dimen/activity_vertical_margin”


tools:context=”.MainActivity” >


<com.xys.flexible.FlexibleScrollView


android:layout_width=”match_parent”


android:layout_height=”match_parent”


android:text=”@string/hello_world” >


<TextView


android:id=”@+id/tv”


android:layout_width=”fill_parent”


android:layout_height=”wrap_content”


android:text=”……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n……我是字符串……\n” />


</com.xys.flexible.FlexibleScrollView>


</RelativeLayout>


默认的maxOverScrollY=0,所以我们看不见任何效果,只要改为>0的值,就有效果了。
!qhyb.rar 当 CAD 缺失对应字体时,图纸文字会显示异常,出现乱码、问号。将下载好的字体文件复制到 AutoCAD 的 Fonts 文件夹中,即可恢复正常显示。 立即下载

相关推荐

政府科技管理部门如何实现科技成果高效转化?.docx

政府科技管理部门如何实现科技成果高效转化?

Android中使用HorizontalScrollView和TableLayout遇到的问题

<br /> 今天在做一个控件,想实现的效果是,在一行内显示N个图片(或其他),要求每个图片的间隔是一样的。<br />之前用LinearLayout来做,里面包含多个ImageView,可是没有达到想要的效果,这个后面再研究下。<br />今天突然想到用TableLayout来做,之前没有用过这种布局。<br />最终效果如下:<br /><br /> <br />现将制作过程中遇到的问题列出。<br />1.  各view不是均匀占着整行。xml如下:<br /><?xml version="1.0"

mmvc2010的专栏 4811

librdkafka Windows 包(可直接使用)

librdkafka/win ├─ bin/ # 全部运行时dll + pdb调试符号 + plugins插件目录 ├─ include/ # 头文件 rdkafka.h └─ lib/ # .lib静态导入库(链接阶段使用)

关于HorizontalScrollView宽度如果是固定的不能滑动的问题

遇到这个问题困扰了我好一会儿,最后想明白了: HorizontalScrollView能不能滑动是由子布局的所展示的内容是否超出HorizontalScrollView的宽度决定的 所以如果想达到整个HorizontalScrollView所展示的宽度是想要的宽,设置固定宽度的应该是HorizontalScrollView中子布局中渲染之后宽度最大的那个,这样就可以使HorizontalScrollView展示固定宽度的内容 唉,还是对HorizontalScrollView的概念没理解清楚 ...

海蓝的博客 774

修改一个值,让ScrollViewListView充满弹性

android默认的ScrollViewListView在最顶端下拉或者最底端上拉的时候,都不会带有反弹效果,很生硬的让你不能继续拖动,不像iOS那样可以回弹,个人认为,iOS的交互还是略好一点,那么我们也来在Android下实现下这个功能,先看下效果图: 那么我们今天的目标是一句话实现,如何去做呢 我们还是先看下代码: [java] view

gao_chun 3693

ScrollView子布局如何充满全屏

scrollview的直接子布局只能是一个,而且默认是wrap_content,当我们使用scrollview的时候还需要其直接子布局充满全屏,这时候使用match_parent是没有效果的,需要使用scrollview的fillViewport属性设置为true

张迅之的博客 1381

为什么选择InboxLayout?5个理由让你的App手势体验超越竞品

InboxLayout是一款专为Android应用设计的手势交互框架,它模仿了Google Inbox的流畅滑动体验,让你的应用在交互设计上脱颖而出。无论是列表展示还是内容浏览,InboxLayout都能提供丝滑的手势操作,帮助开发者轻松实现媲美原生应用的交互效果。 ## 1. 沉浸式滑动体验,让用户爱不释手 🚀 InboxLayout最核心的优势在于其流畅的滑动交互设计。当用户在列表或内容

gitblog_00791的博客 1061

android ---ListView重写 实现弹性效果

xml 中theme一定要是NoActionBar 写一个类继承ListView 重写 overScrollBy 方法 测试此方法 package com.yifei.myapplication; import android.content.Context; import android.os.Build; import android.support.annotation.Requ...

weixin_41069726的博客 384

android 解决ScrollView嵌套ListView的问题,不能全屏,全屏不能显示下面控件

在开发中遇到ScrollView嵌套ListView的问题,最开始发出不能全屏,效果是这样的; 但我想要的效果是这样的: 下面看一下布局文件: <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/and...

weixin_30784501的博客 319

scrollview自适应listview的四种方案

做过android项目的人很多时候都会遇到在scrollview中嵌套listview的情况,需求很简单,就是在页面的下方有列表,而且要求是当列表多的时候可以向上滑动,而且是整个页面一起向上滑动,所以就有了scrollview中嵌套listview的情况出现。本文中介绍了四种方案,拿来和大家分享,希望传播更多的正能量!

一杯咖啡,一行代码,是一种境界,也是一种追求! 2778

关于listviewScrollView中不能全屏的问题

1,public static class Utility {         public static void setListViewHeightBasedOnChildren(ListView listView) {             ListAdapter listAdapter = listView.getAdapter();             if (listAda

qq_22321235的专栏 240

给力的ActivityGroup+自定义弹性ListView+自定义弹性ScrollView+解决冲突问题

在这里我简单写了个DEMO,主要实现了在我们工作中可能会经常要遇到的一些问题,如,在你使用TABHOST的时候,你可能希望能够自由度更大一些,在这里我使用ActivityGroup来替代它,非常给力的,其实就是在工作中可能会遇到我们自定义的ListViewScrollView一起使用的情况会发生冲突,在前编我把自定义具有弹性ListView与自定义具有弹性ScrollView都贴出来了,在这...

holoblog 146

继承ListView实现弹性效果

//只需改一个参数即可 public class MyListView extends ListView { int a = 200; public MyListView(Context context, AttributeSet attr){ super(context,attr); } public MyListView(Context context

Revival_Liang的博客 345

关于ListView弹性滑动

最近项目中用到了弹性滑动,但是这个弹性滑动只有在2.3之后才有了功能函数,在2.2以及之前的版本中,只有自己去实现了。 查了一下网上的资源,貌似没有提供出来一个具体的方式来实现。看到一个牛人写的一个软件中实现了弹性滑动,查了查源码,然后看了看ListView的源码,然后自己搞了一下,实现了弹性滑动。 基本思路就是得到出当前的可显示的item的位置,然后判断出否是越界,这...

flyouting 229

国有企业如何推动科技创新与产业升级融合?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务如何实现数字化升级?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

兄弟MFC-J2330DW 中文维修手册

兄弟MFC-J2330DW 中文维修手册

上一篇: 幽默的老外程序员注释
下一篇: 欢迎使用CSDN-markdown编辑器
jecon
博客等级 码龄15年 10粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值