Android弹性滑动
来源:互联网 发布:mac homebrew tomcat 编辑:程序博客网 时间:2024/05/16 07:09
1、View使用Scroller滑动
/**
* 在scroller.startScroll()方法中,会将scrollX和deltaX相加存入mFinalX中
* invalidate()方法会调用draw()方法,draw()会调用computeScroll()方法,而在View
* 中computeScroll()方法是空实现,所以要复写该方法,在方法中调用
* scrollTo(scroller.getCurrX(), scroller.getCurrY()),又因为getCurrX()方法返回的是mFinalX
* 的值,调用postInvalidate()方法进行第二次重绘实现view的刷新
*/
Scroller scroller = new Scroller(mContext);
private void smoothScrollTo(int destX, int destY) {
int scrollX = getScrollX();
int deltaX = destX - scrollX;
// 1000ms内滑向destX,效果就是慢慢滑动
scroller.startScroll(scrollX, 0, deltaX, 0, 1000);
invalidate();
}
@Override
public void computeScroll() {
if (scroller.computeScrollOffset()) {
scrollTo(scroller.getCurrX(), scroller.getCurrY());
postInvalidate();
}
}
2、使用动画
final int startX = 0;
final int deltaX = 100;
final Button mButton = new Button(mContext);
ValueAnimator animator = ValueAnimator.ofInt(0, 1).setDuration(1000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
float fraction = animator.getAnimatedFraction();
mButton.scrollTo(startX + (int) (deltaX * fraction), 0);
}
});
animator.start();
3、使用延时加载 Handler
private static final int MESSAGE_SCROLL_TO = 1;
private static final int FRAME_COUNT = 30;
private static final int DELAYED_TIME = 33;
private int mCount = 0;
private Button mButton;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_SCROLL_TO:
mCount++;
if (mCount <= FRAME_COUNT) {
float fraction = mCount / (float) FRAME_COUNT;
int scrollX = (int) (fraction * 100);
mButton.scrollTo(scrollX, 0);
mHandler.sendEmptyMessageDelayed(MESSAGE_SCROLL_TO, DELAYED_TIME);
}
break;
}
}
};
0 0
- Android弹性滑动
- android listview 的弹性滑动
- Android Scroll实现弹性滑动 一 列表下拉弹性滑动
- Android Scroll实现弹性滑动 二 随手弹性滑动
- 弹性滑动
- Android View 的弹性滑动: Scroller使用说明
- Android ListView上下滑动弹性动画
- android使用延时策略实现弹性滑动
- android-事件分发:弹性滑动、滑动冲突等
- android listview 的弹性滑动 简单demo 实现
- android 仿新浪微博的弹性滑动
- android listview 的弹性滑动 简单demo 实现
- android自定义ViewPager之——水平滑动弹性效果
- Android Scroller类详解--实现View内容弹性滑动
- Android学习笔记 3.3View的弹性滑动
- 【android】View的事件体系3-弹性滑动
- android ListView滑动到顶部带弹性效果
- 滑动盒子/弹性盒子
- AEAI BPM流程集成平台V3.0.2版本开源发布
- 关于java代码优化
- Java 并发专题 : Semaphore 实现 互斥 与 连接池
- 中产阶级养成记:现代人需要的8点能力素养(一)(不服来战,欢迎勾搭)
- 什么是你的不可替代性和核心竞争力
- Android弹性滑动
- 【剑指offer】之两个链表的第一个公共结点
- 从零开始学Objective-C(02)第一个Objective-C程序
- Swift 字符串和字符(笔记)
- 直接拿来用!最火的Android开源项目(二)
- windows下的,php环境下,无法运行帝国备份王程序的原因是如下
- Where can i download Android & iOS source code of TI BLE Multitool
- iOS 视图,动画渲染机制探究
- Android 导航栏ActionBar和状态栏StautsBar的定制