Android学习笔记 3.3View的弹性滑动
来源:互联网 发布:软件前景 编辑:程序博客网 时间:2024/05/18 09:06
1.使用Scroller
典型使用方法(在需要使用的地方调用soomthScrollTo()方法):
Scroller scroller;private void soomthScrollTo(int destX,int destY){int scrollX=getScrollX();int scrollY=getScrollY();int deltaX=destX-scrollX;int deltaY=destY-scrollY;scroller.startScroll(scrollX,scrollY,deltaX,deltaY,1000);invalidate();}public void computeScroll(){if(scroller.computeScrollOffset()){scrollTo(scroller.getCurrX(),scroller.getCurrY());postInvalidate();}}
Scroller本身不能实现view的滑动,他需要配合View的computeScroll方法才能完成弹性滑动,它不断让View重绘,每次重绘距起始时间有个时间间隔,通过时间间隔就可以得出View当前的位置,然后通过scrollTo方法完成滑动。
2.使用动画
动画本身就是一种渐进的过程,因此具有弹性滑动的效果。
属性动画:
ObjectAnimator.ofFloat(target,"translationX",0,100).setDuration(100).start();
利用动画特性,模仿Scroller来实现View的弹性滑动:
final int startX=0,startY=0;final int deltaX=-100,deltaY=-100;final ValueAnimator animator =ValueAnimator.ofInt(0,1).setDuration(1000);animator.addUpdateListener(new AnimatorUpdateListener() {public void onAnimationUpdate(ValueAnimator animation) {// TODO Auto-generated method stubfloat fraction=animator.getAnimatedFraction();Anbtn.scrollTo(startX+(int)(deltaX*fraction), startY+(int)(deltaY*fraction));}});animator.start();
3.使用延时策略
它的核心思想是通过发送一系列延时消息从而达到一种渐进式的效果,具体可以使用Handler,View,postDelayed方法,也可以使用线程的sleep方法。
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 Handler mHandler=new Handler(){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);Habtn.scrollTo(scrollX, 0);mHandler.sendEmptyMessageDelayed(MESSAGE_SCROLL_TO, DELAYED_TIME);}break;}};};
0 0
- Android学习笔记 3.3View的弹性滑动
- 学习笔记:View的事件体系3:弹性滑动
- Android View 的弹性滑动: Scroller使用说明
- View的弹性滑动
- Android中View的弹性滑动——Android开发艺术探索笔记
- Android学习笔记 3.2View的滑动
- Android开发艺术探索笔记(10)- View的弹性滑动
- 【android】View的事件体系3-弹性滑动
- 初识自定义View-View的弹性滑动
- View的事件体系(上)(View基础知识,滑动,弹性滑动)
- View的滑动之瞬间滑动与弹性滑动
- 使用Scroller实现View的弹性滑动
- android listview 的弹性滑动
- View弹性滑动
- View实现弹性滑动
- Android带弹性的View
- View滑动---学习笔记
- View滑动学习笔记
- IOS开发 隐藏电池栏 (电池状态栏)
- HDU4162 Shape Number
- hue安装运行时候提示:oozie share lib not installed in default location.
- Jquery下拉框取值
- 【转】iOS UIButton(UIEdgeInsets)
- Android学习笔记 3.3View的弹性滑动
- 棋盘分割
- httpclient4.3发送post和get实例代码
- html中META标签的作用及SEO关键字优化办法
- Elasticsearch源码分析九--查询解析器QueryParser注册过程
- Jquery 多选下拉框取值
- 基于HTK的连续语音识别系统搭建学习笔记(一)
- Oracle 增加修改删除字段
- 趣学 C 语言 (一)—— time.h