CustomerScrollView.java:
class CustomerScrollView extends ScrollView {
private Context mContext;
private View mView;
private Rect mRect = new Rect();
private float y;
public CustomerScrollView(Context context) {
super(context);
this.mContext = context;
}
public CustomerScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
}
public CustomerScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mContext = context;
}
@Override
protected void onFinishInflate() {
if (getChildCount() > 0) {
this.mView = getChildAt(0);
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (mView == null) {
return super.onTouchEvent(ev);
} else {
commOnTouchEvent(ev);
}
return super.onTouchEvent(ev);
}
private 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 (mRect.isEmpty()) {
mRect.set(mView.getLeft(), mView.getTop(),
mView.getRight(), mView.getBottom());
}
if (mView.getTop() - deltaY < 200
&& mView.getTop() - deltaY > -200) {
mView.layout(mView.getLeft(), mView.getTop() - deltaY,
mView.getRight(), mView.getBottom() - deltaY);
}
}
break;
default:
break;
}
}
private boolean isNeedMove() {
int offset = mView.getMeasuredHeight() - getHeight();
int scrollY = getScrollY();
if (scrollY == 0 || scrollY == offset) {
return true;
}
return false;
}
private boolean isNeedAnimation() {
return !mRect.isEmpty();
}
private void animation() {
TranslateAnimation ta = new TranslateAnimation(0, 0, mView.getTop(),
mRect.top);
ta.setDuration(200);
mView.startAnimation(ta);
mView.layout(mRect.left, mRect.top, mRect.right, mRect.bottom);
mRect.setEmpty();
}
}
分享到:
相关推荐
弹性ScrollView是一种自定义的滚动视图,主要用于在Android开发中实现具有弹性效果的滚动功能。在Android原生的ScrollView中,我们无法直接实现类似于橡皮筋拉伸效果的滚动,而弹性ScrollView则提供了这种功能,增加...
在Android开发中,为了提供与iOS类似的用户体验,开发者经常需要实现一些特定的界面效果,比如“仿iOS弹性ScrollView”。这个专题主要关注如何在Android平台上创建一个具有弹性滚动特性的ScrollView,使得用户在上下...
本文将深入探讨如何基于`ScrollView`创建一个具有弹性效果的自定义组件,即“自定义弹性scrollviewDemo”。该组件实现了下拉弹回和上拉弹回的功能,与下拉刷新的效果类似,但更具趣味性和交互性。 首先,我们需要...
这个名为"Android 弹性ScrollView和悬浮头"的压缩包文件正专注于解决这一问题,它提供了源码示例和相关说明,帮助开发者在Android应用中实现类似于iOS的弹性滚动效果和浮动头部功能。 首先,我们来理解一下"弹性...
在Android开发中,"安卓Setting[弹性ScrollView]Demo"是一个示例项目,它展示了如何在设置界面中实现一个具有弹性的ScrollView。ScrollView是Android的一种布局容器,它允许用户滚动其内容,当内容超过屏幕大小时...
自定义拉到顶部和底部具有弹性ScrollView,支持下拉上拉弹性
react-native-spring-scrollview 是JavaScript实现的一组高性能弹性ScrollView家族,使用它可以轻松地实现iOS风格的下拉刷新及上拉加载更多,拥有完全一致的视图表现及原生的弹性体验,并且兼容iOS和Android。
自定义拉到顶部和底部具有弹性ScrollView
在压缩包中的"android_scoll"文件很可能是这个示例项目的源代码,包含了实现弹性ScrollView所需的布局文件、Java代码和其他资源。开发者可以通过查看这些文件,学习如何自定义ScrollView并实现弹性效果。 总的来说...
将文件复制到工程中,将包名改为自己项目的包名即可!简单好用
使用XListView做出的弹性ScrollView效果,代码虽然有点变态,但是和iOs的弹性效果非常接近,是目前遇到过最好的弹性效果,看到咕咚运动是这样的效果,估计就是这样干出来的吧,倒是有点曲线救国的意思了,有兴趣的...
有弹性的ScrollView.
本文将深入探讨如何实现“弹性拉伸”的ScrollView、在ScrollView中嵌套ListView以及添加ScrollView的滑动监听。这些技巧在创建复杂的用户界面时非常实用。 首先,让我们谈谈“弹性拉伸”效果的ScrollView。这种效果...
基于as3的Flash ScrollPanel动画实例集,Flash的版本问题另人头痛啊,Flash CS4打的有的文件会出错,不知Macromedia公司卖给了Adobe后,还是不能解决版本不兼容的问题,好烦人的Flash。
有弹性的ScrollView 实现下拉弹回和上拉弹回,可直接使用
这篇博文“有弹性的ScrollView&ListView&HorizontalScrollView”似乎探讨了如何为这些视图添加弹性效果,使滚动体验更加流畅和有趣。弹性滚动效果通常是通过模拟物理世界的回弹效果来实现的,它能让用户在到达视图...
然而,标准的ScrollView并不支持弹性滑动效果,即在滑动到边界时产生回弹的效果。这通常是通过第三方库或者自定义控件来实现的,比如我们这里提到的"ReboundScrollView"。 ReboundScrollView是一个仿照Facebook开源...
5. **bounce**:此属性控制 ScrollView 是否具有弹性效果。当 `bounce` 设置为 `true` 时,用户滚动到内容的边缘时,ScrollView 会有一个回弹效果。 6. **scrollEvent**:你可以监听 `scroll` 事件来获取用户滚动时...