Scroller 实现的弹性回弹的LinearLayout
由于公司业务发展,多app需求很少,被调到java后台开发接口三个月了,还要我继续做 java,最近有点想换工作,不得不重新看看基础知识了。
晚上看到了滑动的实现方式,平滑滑package com.example.alter.scrollers.scroller;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.view.GestureDetector;
- import android.view.MotionEvent;
- import android.widget.LinearLayout;
- import android.widget.Scroller;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- /**
- * Created by alter on 16/4/18.
- */
- public class ScrollLinearLayout extends LinearLayout {
- Logger logger = LoggerFactory.getLogger(ScrollLinearLayout.class);
- private Scroller mScroller;
- private GestureDetector gestureDerector;
- public ScrollLinearLayout(Context context) {
- super(context, null);
- }
- public ScrollLinearLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- mScroller = new Scroller(context);
- gestureDerector = new GestureDetector(context, new GestureDetector.OnGestureListener() {
- @Override
- public boolean onDown(MotionEvent e) {
- return true;
- }
- @Override
- public void onShowPress(MotionEvent e) {
- }
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- return false;
- }
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
- int disY = (int) ((distanceY-0.5)/);
- beginScroll(,disY);
- return false;
- }
- @Override
- public void onLongPress(MotionEvent e) {
- }
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- return false;
- }
- });
- }
- private void beginScroll(int dx, int dy) {
- mScroller.startScroll(mScroller.getFinalX(),mScroller.getFinalY(),dx,dy);
- invalidate();
- System.out.println("smoothScrollBy()---> " +
- "mScroller.getFinalX()="+mScroller.getFinalX()+","+
- "mScroller.getFinalY()="+mScroller.getFinalY());
- }
- private void prepareScroll(int fx, int fy) {
- int dx=fx-mScroller.getFinalX();
- int dy=fy-mScroller.getFinalY();
- beginScroll(dx,dy);
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {switch (event.getAction()){
- case MotionEvent.ACTION_UP:
- prepareScroll(,);
- break;
- default:
- return gestureDerector.onTouchEvent(event);
- }
- return super.onTouchEvent(event);
- }
- @Override
- public void computeScroll() {
- if (mScroller.computeScrollOffset())
- {
- logger.info("CurX" + mScroller.getCurrX() + "CurY" + mScroller.getCurrY());
- scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
- postInvalidate();
- }
- super.computeScroll();
- }
- }
只实现了垂直方向的回弹效果。
滑动时,调用手势监听器的滑动;
手指抬起,调用Scroller滑动到0,0位置,完成回弹效果。
Scroller 实现的弹性回弹的LinearLayout的更多相关文章
- Android Scroller简单用法
Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...
- Android -- Scroller
Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(conte ...
- Android中滑屏实现----手把手教你如何实现触摸滑屏以及Scroller类详解
前言: 虽然本文标题的有点标题党的感觉,但无论如何,通过这篇文章的学习以及你自己的实践认知,写个简单的滑屏小 Demo还是just so so的. 友情提示: 在继续往下面读之前,希望您对以下知识点 ...
- android 使用Scroller实现缓慢移动
在Launcher中的Workspace中实现了左右屏幕切换效果,里面就用到了Scroller记录滑动轨迹,实现一种缓慢地向左或向右移动的效果,这里我对这种效果进行总结: 我们先看一个例子:点击按钮时 ...
- view之Scroller工具类和GestureDetector的简单用法
转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...
- 【Android】Scroller分析
mScroller.getCurrX() //获取mScroller当前水平滚动的位置 mScroller.getCurrY() //获取mScroller当前竖直滚动的位置 mScroller.ge ...
- [Android自定义控件] Android Scroller工具类和GestureDetector的简单用法
转载:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View ...
- Scroller应用:ListView滑动删除
1.设计思路 在Scroller的应用--滑屏实现中使用Scroller实现滑屏效果,这里使用Scroller与ListView实现相似QQ滑动.然后点击删除功能.设计思路是Item使用Scrolle ...
- Android Scroller简单用法实例
Android里Scroller类是为了实现View平滑滚动的一个Helper 类.通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(cont ...
随机推荐
- 分享:扩展Visual Studio 的简单方法
作为 MS 阵营的码农,相信Visual Studio 肯定是大家的主要武器了,但不知道大家有没有扩展Visual Studio 的需求. 最近我需要做一个工具,发现最好是实现在VS里面,于是,Goo ...
- 【leetcode❤python】Binary Watch
#-*- coding: UTF-8 -*- from itertools import combinationsclass Solution(object): hourList=[8, ...
- VIM如何将全部内容复制并粘贴到外部
ubuntu默认安装的vim是不支持系统剪切.粘贴版的,需要执行以下安装:sudo apt-get install vim-gnome 注意要让vim支持系统粘贴板,首先执行sudo apt-get ...
- oracle, create table, insufficient privileges
SQL> exec pro_gz_day_report; ORA-01031: insufficient privileges ORA-06512: at & ...
- Oracle的数据恢复——Flashback用法汇总
/* 11g的flashbackup 分好几种,分别用途不一样. A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点, 能恢复到的最早的SCN, 取决与F ...
- CUBRID学习笔记 35 net驱动错误码和信息 cubrid教程示例
DO.NET Error Code Number Error Code Error Message Note 0 ER_NO_ERROR "No Error" 1 ER_NOT ...
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- C语言单链表实现19个功能完全详解
谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...
- Android 使用finalBitmap实现缓存读取
public class NewsApplication extends Application{ private FinalBitmap finalBitmap=null; public Final ...
- JZs3c2440裸板程序GPIO操作总结
分别用汇编,汇编+C两种方式 ***************************************汇编编程led_on.s********************************** ...