由于公司业务发展,多app需求很少,被调到java后台开发接口三个月了,还要我继续做 java,最近有点想换工作,不得不重新看看基础知识了。

晚上看到了滑动的实现方式,平滑滑package com.example.alter.scrollers.scroller;


  1. import android.content.Context;
  2. import android.util.AttributeSet;
  3. import android.view.GestureDetector;
  4. import android.view.MotionEvent;
  5. import android.widget.LinearLayout;
  6. import android.widget.Scroller;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. /**
  10. * Created by alter on 16/4/18.
  11. */
  12. public class ScrollLinearLayout extends LinearLayout {
  13. Logger logger = LoggerFactory.getLogger(ScrollLinearLayout.class);
  14. private Scroller mScroller;
  15. private GestureDetector gestureDerector;
  16. public ScrollLinearLayout(Context context) {
  17. super(context, null);
  18. }
  19. public ScrollLinearLayout(Context context, AttributeSet attrs) {
  20. super(context, attrs);
  21. mScroller = new Scroller(context);
  22. gestureDerector = new GestureDetector(context, new GestureDetector.OnGestureListener() {
  23. @Override
  24. public boolean onDown(MotionEvent e) {
  25. return true;
  26. }
  27. @Override
  28. public void onShowPress(MotionEvent e) {
  29. }
  30. @Override
  31. public boolean onSingleTapUp(MotionEvent e) {
  32. return false;
  33. }
  34. @Override
  35. public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
  36. int disY = (int) ((distanceY-0.5)/);
  37. beginScroll(,disY);
  38. return false;
  39. }
  40. @Override
  41. public void onLongPress(MotionEvent e) {
  42. }
  43. @Override
  44. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  45. return false;
  46. }
  47. });
  48. }
  49. private void beginScroll(int dx, int dy) {
  50. mScroller.startScroll(mScroller.getFinalX(),mScroller.getFinalY(),dx,dy);
  51. invalidate();
  52. System.out.println("smoothScrollBy()---> " +
  53. "mScroller.getFinalX()="+mScroller.getFinalX()+","+
  54. "mScroller.getFinalY()="+mScroller.getFinalY());
  55. }
  56. private void prepareScroll(int fx, int fy) {
  57. int dx=fx-mScroller.getFinalX();
  58. int dy=fy-mScroller.getFinalY();
  59. beginScroll(dx,dy);
  60. }
  61. @Override
  62. public boolean onTouchEvent(MotionEvent event) {switch (event.getAction()){
  63. case MotionEvent.ACTION_UP:
  64. prepareScroll(,);
  65. break;
  66. default:
  67. return gestureDerector.onTouchEvent(event);
  68. }
  69. return super.onTouchEvent(event);
  70. }
  71. @Override
  72. public void computeScroll() {
  73. if (mScroller.computeScrollOffset())
  74. {
  75. logger.info("CurX" + mScroller.getCurrX() + "CurY" + mScroller.getCurrY());
  76. scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
  77. postInvalidate();
  78. }
  79. super.computeScroll();
  80. }
  81. }

只实现了垂直方向的回弹效果。

滑动时,调用手势监听器的滑动;

手指抬起,调用Scroller滑动到0,0位置,完成回弹效果。

Scroller 实现的弹性回弹的LinearLayout的更多相关文章

  1. Android Scroller简单用法

    Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...

  2. Android -- Scroller

    Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...

  3. Android中滑屏实现----手把手教你如何实现触摸滑屏以及Scroller类详解

    前言:  虽然本文标题的有点标题党的感觉,但无论如何,通过这篇文章的学习以及你自己的实践认知,写个简单的滑屏小 Demo还是just so so的. 友情提示: 在继续往下面读之前,希望您对以下知识点 ...

  4. android 使用Scroller实现缓慢移动

    在Launcher中的Workspace中实现了左右屏幕切换效果,里面就用到了Scroller记录滑动轨迹,实现一种缓慢地向左或向右移动的效果,这里我对这种效果进行总结: 我们先看一个例子:点击按钮时 ...

  5. view之Scroller工具类和GestureDetector的简单用法

    转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...

  6. 【Android】Scroller分析

    mScroller.getCurrX() //获取mScroller当前水平滚动的位置 mScroller.getCurrY() //获取mScroller当前竖直滚动的位置 mScroller.ge ...

  7. [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法

    转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...

  8. Scroller应用:ListView滑动删除

    1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...

  9. Android Scroller简单用法实例

    Android里Scroller类是为了实现View平滑滚动的一个Helper 类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(cont ...

随机推荐

  1. 分享:扩展Visual Studio 的简单方法

    作为 MS 阵营的码农,相信Visual Studio 肯定是大家的主要武器了,但不知道大家有没有扩展Visual Studio 的需求. 最近我需要做一个工具,发现最好是实现在VS里面,于是,Goo ...

  2. 【leetcode❤python】Binary Watch

    #-*- coding: UTF-8 -*- from itertools import combinationsclass Solution(object):        hourList=[8, ...

  3. VIM如何将全部内容复制并粘贴到外部

    ubuntu默认安装的vim是不支持系统剪切.粘贴版的,需要执行以下安装:sudo apt-get install vim-gnome 注意要让vim支持系统粘贴板,首先执行sudo apt-get ...

  4. oracle, create table, insufficient privileges

    SQL> exec pro_gz_day_report;          ORA-01031: insufficient privileges          ORA-06512: at & ...

  5. Oracle的数据恢复——Flashback用法汇总

    /* 11g的flashbackup 分好几种,分别用途不一样. A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点, 能恢复到的最早的SCN, 取决与F ...

  6. CUBRID学习笔记 35 net驱动错误码和信息 cubrid教程示例

    DO.NET Error Code Number Error Code Error Message Note 0 ER_NO_ERROR "No Error"   1 ER_NOT ...

  7. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  8. C语言单链表实现19个功能完全详解

    谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...

  9. Android 使用finalBitmap实现缓存读取

    public class NewsApplication extends Application{ private FinalBitmap finalBitmap=null; public Final ...

  10. JZs3c2440裸板程序GPIO操作总结

    分别用汇编,汇编+C两种方式 ***************************************汇编编程led_on.s********************************** ...