- 浏览: 384802 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
longxishui12:
这个一定要顶得高高的。
[Android UI界面] android中仿iphone实现listview的反弹效果 -
klower.jiang:
Good job, Thank you so much!
能够兼容ViewPager的ScrollView -
ZSRTFAT:
...
file size 的大小计算
转载:http://www.eoeandroid.com/thread-100933-1-1.html
View中也有scrollBy和scrollTo这两个方法,但是ScrollView对scrollTo进行重写 由于:public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y); } View:public void scrollTo(int x, int y) { if (mScrollX != x || mScrollY != y) { int oldX = mScrollX; int oldY = mScrollY; mScrollX = x; mScrollY = y; onScrollChanged(mScrollX, mScrollY, oldX, oldY); if (!awakenScrollBars()) { invalidate(); } } } 所以也就相当于scrollBy和scrollTo这两个方法都被重写了。重写的代码中加入校验,当你移动到最上面或者最下面的时候无法再向上移动或向下移动。这就导致了如果简单调用scrollTo无法实现继续移动。如果你还要继续移动的话mScrollY 就为0或者是你内部视图的测量高度-ScrollView的高度。scrollTo是移动到,scrollBy是移动了。如下图: 2011-9-26 16:24 上传下载附件 (9.45 KB) 所以内容向下移动,手指向上滑动,那这个deltaY 就为正,也就是mScrollY =mScrollY +deltaY ,mScrollY 变大直到移动到最下无法移动位置;反之mScrollY 变小直到为0移动到最上面为止。 final float preY = y; float nowY = ev.getY(); int deltaY = (int) (preY - nowY); // 滚动,deltaY 为移动的距离,如果要用scrollTo需要计算准确的位置,也就是先前的位置在加上现在移动了多少 scrollBy(0, deltaY); 基于这些就可以重写ScrollView的onTouchEvent并结合ScrollView的内部视图的layout()方法、TranslateAnimation()实现反弹效果。 ScrollView代码: ---------------------------------------------------------------------------------------------------------------------- 本帖隐藏的内容需要回复才可以浏览 /** * ScrollView反弹效果的实现 * 破三军 转载请注明出处 */ public class MyScrollView extends ScrollView { private View inner; private float y; private Rect normal = new Rect();; public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { if (getChildCount() > 0) { inner = getChildAt(0); } } @Override public boolean onTouchEvent(MotionEvent ev) { if (inner == null) { return super.onTouchEvent(ev); } else { commOnTouchEvent(ev); } return super.onTouchEvent(ev); } public void commOnTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: y = ev.getY(); break; case MotionEvent.ACTION_UP: if (isNeedAnimation()) { animation(); } break; case MotionEvent.ACTION_MOVE: final float preY = y; float nowY = ev.getY(); int deltaY = (int) (preY - nowY); // 滚动 scrollBy(0, deltaY); y = nowY; // 当滚动到最上或者最下时就不会再滚动,这时移动布局 if (isNeedMove()) { if (normal.isEmpty()) { // 保存正常的布局位置 normal.set(inner.getLeft(), inner.getTop(), inner.getRight(), inner.getBottom()); } // 移动布局 inner.layout(inner.getLeft(), inner.getTop() - deltaY, inner.getRight(), inner.getBottom() - deltaY); } break; default: break; } } // 开启动画移动 public void animation() { // 开启移动动画 TranslateAnimation ta = new TranslateAnimation(0, 0, inner.getTop(), normal.top); ta.setDuration(200); inner.startAnimation(ta); // 设置回到正常的布局位置 inner.layout(normal.left, normal.top, normal.right, normal.bottom); normal.setEmpty(); } // 是否需要开启动画 public boolean isNeedAnimation() { return !normal.isEmpty(); } // 是否需要移动布局 public boolean isNeedMove() { int offset = inner.getMeasuredHeight() - getHeight(); int scrollY = getScrollY(); if (scrollY == 0 || scrollY == offset) { return true; } return false; } }
- ScrollView反弹效果.rar (48.6 KB)
- 下载次数: 8
发表评论
-
dialog全屏的问题
2012-11-02 15:43 1220自定义的dialog没有全屏的解决办法: AlertD ... -
Android中计算textView长度问题
2012-10-18 17:54 5760http://zilla.blog.51cto.com/309 ... -
控件宽高
2012-10-18 11:38 901imageView = (ImageView)findVie ... -
多级树形菜单的实现_expandlist
2012-10-17 17:17 836多级树形菜单的实现_expandlist http: ... -
适应多行长文本的Android TextView
2012-09-18 21:14 1081适应多行长文本的Android TextView ht ... -
ListView的右边滚动滑块
2012-09-03 18:09 3273ListView的右边滚动滑块: XML布局只需要在L ... -
设置Scrollview滚动位置
2012-09-03 09:51 1338appViewContent.post(new Runnabl ... -
ScrollView中的组件设置android:layout_height=fill_parent不起作用的解决办法
2012-08-31 11:01 1647ScrollView中的组件设置android:layout_ ... -
viewpager
2012-07-23 14:28 1977Android ViewPager多页面滑动切换以及动画效果 ... -
search搜索框
2012-07-05 12:50 793转载: 动态修改android内置搜索对话框(浮动搜索 ... -
仿iphone滑动开关按钮实现
2012-06-25 15:24 2585转载: http://www.apkbus.com/foru ... -
android仿iphone滚轮效果实现
2012-06-25 15:19 1703转载:android仿iphone滚轮效果实现 htt ... -
能够兼容ViewPager的ScrollView
2012-06-25 13:03 13480转载:http://www.strongcms.net/mob ... -
viewpager Android实现导航菜单左右滑动效果
2012-06-19 16:02 7072http://blog.csdn.net/xiedantibu ... -
纵向GALERY
2012-06-07 16:11 820纵向GALERY收藏: -
listview的item点击无反应
2012-06-04 13:56 1104用于处理在listview中加入某些控件后,控件和Listvi ... -
edittext判断输入字符长度
2012-05-29 10:00 14772转载: http://blog.csdn.net/li ... -
edittext
2012-05-21 11:40 837EditText继承关系:View-->TextView ... -
relativelayout
2012-05-21 11:38 908// 相对于给定ID控件 android:layout_ ... -
Android 对话框中的进度条 ProgressDialog
2012-04-22 22:35 1055package com.yarin.android.Tes ...
相关推荐
这篇博客“ScrollView反弹效果实现[bug修正版]”就详细讲解了如何为ScrollView添加弹簧反弹效果,并修复了可能存在的问题。 首先,我们来看一下如何添加弹簧反弹效果。一种常见的解决方案是使用`androidx.core....
本文将深入探讨如何实现一个自定义的ScrollView,以添加上、下拉的反弹效果,从而提高用户的交互体验。 首先,我们需要了解ScrollView的基本用法。ScrollView是一个可以包含单个直接子视图的垂直滚动容器。这意味着...
下面将详细介绍如何在Android中实现自定义ScrollView的反弹效果。 首先,我们需要创建一个新的ScrollView子类,例如命名为`BounceScrollView`。在这个自定义视图中,我们需要重写一些关键方法以实现回弹效果。关键...
这个“ScrollView反弹效果”就是我们今天要讨论的知识点。 在给定的资源中,"zhy_bounceScrollView02"很可能是包含实现这种反弹效果的代码示例。通常,这种效果是通过自定义ScrollView并重写其滚动相关的计算方法来...
当用户滚动到ScrollView的顶部或底部时,有时我们希望实现一个反弹效果,即滚动条会在到达边界后短暂地回弹,增加用户体验的流畅感。这个效果通常被称为“橡皮筋效果”或“弹簧效果”,在iOS中称为“弹性滚动”,在...
在压缩包中的`zhy_bounceScrollView02`文件可能是实现回弹效果的一个示例代码,可能包含了如何设置ScrollView、调整内容偏移量以及实现回弹动画的详细步骤。通过研究这个示例,开发者可以更好地理解如何在实际项目中...
通过以上步骤,我们就可以在Android应用中实现类似iOS的ScrollView反弹效果。这种自定义的ScrollView可以为用户提供更丰富的交互体验,增加应用的吸引力。需要注意的是,实现这种效果需要对Android的触摸事件处理和...
以上就是实现Android ScrollView反弹效果的基本步骤。这个过程中,关键在于对触摸事件的处理和动画的实现。通过自定义ScrollView,我们可以精确控制滚动行为,从而提供更丰富的用户体验。需要注意的是,反弹效果的...
而“阻尼回弹”或“橡皮筋”效果则是指在ScrollView滚动到边界时,手指松开后,内容会像橡皮筋一样有一种自然的反弹效果,就像微信朋友圈那样,给人一种更加真实的交互体验。 实现这种效果的关键在于自定义一个...
然而,原生的ScrollView并没有内置的回弹效果,这种效果通常在iOS设备上可以看到,当用户滑动到内容的边缘时,会有一个弹性反弹的动作,为用户提供一种内容已经到底部或顶部的视觉反馈。本教程将详细介绍如何在...
博文介绍:http://blog.csdn.net/qq_21376985/article/details/52468306 【Android】Android开发实现带有反弹效果,仿IOS反弹scrollview详解教程
在Android开发中,为了提供与iOS相似的用户体验,开发者经常需要实现ScrollView的回弹效果,也就是当用户滑动到ScrollView的边界时,内容会有一种弹性返回的效果。这种效果增加了交互的趣味性和用户友好性。本篇文章...
你可以通过Scroller的fling()方法设置初始速度、最大滚动距离等参数,然后在onComputeScroll()方法中更新ScrollView的位置,实现惯性滚动效果。 4. **边界检测**:为了实现回弹效果,你需要在每次滚动时检查是否...
这种效果通常出现在滚动视图(如ScrollView、ListView)的边缘,当用户尝试超出边界滚动时,内容会像弹簧一样反弹回来,给人一种自然且流畅的感觉。本篇文章将深入探讨如何在ScrollView、ListView以及普通的布局中...
动画的时间可以根据实际情况调整,通常会设置得较为短暂,以模拟真实的物理反弹效果。 4. **判断边界**: 在处理触摸事件时,我们需要检测当前的滚动位置是否已经到达顶部或底部。这通常可以通过比较滚动高度和...
但是,原生的`ScrollView`并没有内置苹果风格的反弹效果。因此,我们需要通过其他方式来实现这一功能。 一种常见的方法是使用第三方库,如`android-parallax-scroll-view`或者`overscroll-decoration`等,这些库...
在项目文件"MyApplication"中,可能包含了MainActivity.java、ScrollView放大弹回效果的自定义实现、对应的XML布局文件以及可能的资源文件。MainActivity.java中,开发者可能初始化了ScrollView,设置了手势监听器,...