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 ...
随机推荐
- springmvc配置文件-1
项目1: web.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?& ...
- Spring测试工具返回Application
package pmisf.webservice.util; import javax.servlet.ServletContextEvent; import javax.servlet.Servle ...
- jar文件签名
1.生成密钥: keytool -genkey -keystore key.keystore -alias key -validity 3650 将在当前目录下生成一个key.keystore文件, ...
- Java开发、网络爬虫、自然语言处理、数据挖掘简介
一.java开发 (1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好. (2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系 ...
- UVA 11461 - Square Numbers
题目:统计区间中的平方数个数. 分析: ... #include <stdio.h> #include <string.h> ]; int main() { int i, a, ...
- .Net文件*夹*操作
一.文件夹操作 Directory类,DirectoryInfo类.使用using System.IO命名空间 (一)创建文件夹 方法一: private string path = @"F ...
- 01.AFNetworking原理及常用操作
AFN的六大模块 NSURLConnection,主要对NSURLConnection进行了进一步的封装,包含以下核心的类: AFURLConnectionOperation AFHTTPReques ...
- Some Useful Property Settings Explained Of Oracle Forms
In Oracle forms when we have two or more blocks and there is a requirement to join them or make a re ...
- [SAP ABAP开发技术总结]字符串表达式String Expressions
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- VS2008中开发智能设备程序的一些总结
原文链接:http://blog.csdn.net/citybug_nj/article/details/2598705 程序中包括四个部分: 系统配置 这个部分用来配置系统中的相关参数,参数包括数据 ...