弹性滑动原理

将一次大的滑动非为若干次小的滑动,并在一个时间段内完成。有一种顺畅的感觉更-好的用户体验

实现方式很多种,包括用Scroller、动画、延时策略.

使用Handler实现弹性滑动

效果可以看到按钮Button向滑动。注意这里是将View的内容改变。

你可以试一试将Button外层的RelitiveLayout去掉,把id放在Button下。发现是Button的文字滑动

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_width="300dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Button" />
</RelativeLayout> </RelativeLayout>
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.RelativeLayout; public class MainActivity extends Activity {
private static final int MESSAGE_SCROLL_TO = 1;
private static final int FRAME_OUT = 30;
private static final int DELAYED_TIME = 30;
private RelativeLayout button;
private int mcount;
private Handler handler = new Handler(){
public void handleMessage(Message msg){
switch (msg.what) {
case MESSAGE_SCROLL_TO:
mcount++;
if (mcount <= FRAME_OUT) {
float fraction = mcount / (float)FRAME_OUT;
int scrollx =(int) (fraction * 100);
            //scrollTo是绝对坐标,所以最后的结果是移动100像素
button.scrollTo(scrollx, 0);
            //每30毫秒发送一次消息
handler.sendEmptyMessageDelayed(MESSAGE_SCROLL_TO, DELAYED_TIME);
}
break; default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (RelativeLayout) findViewById(R.id.button1);
handler.sendEmptyMessageDelayed(MESSAGE_SCROLL_TO, DELAYED_TIME); }
}

参考:《Android开发艺术探索》

实现View弹性滑动例子的更多相关文章

  1. (转载)自定义View——弹性滑动

    滑动是Android开发中非常重要的UI效果,几乎所有应用都包含了滑动效果,而本文将对滑动的使用以及原理进行介绍. 一.scrollTo与ScrollBy View提供了专门的方法用于实现滑动效果,分 ...

  2. Android艺术开发探索第三章——View的事件体系(上)

    Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...

  3. 进阶之路 | 奇妙的View之旅

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: View是什么 View的位置参数 View的触控 View的滑动 涉及以下各个知识点: View ...

  4. View基础知识

    一.View基础知识 View 是Android中所有控件的基类,是一种界面层的控件的一种抽象,代表了一个控件 1.View的位置参数 View的四个属性:top(左上角纵坐标)     left(左 ...

  5. 三、View的事件体系

    1.View基础知识 1.1.什么是View View是Android中所有控件的基类.View是一种界面层的控件的一种抽象,代表了一个控件.除了View,还有ViewGroup,内部包含了许多个控件 ...

  6. Android ——利用OnDraw实现自定义View(转)

    自定义View的实现方式大概可以分为三种,自绘控件.组合控件.以及继承控件.本文将介绍自绘控件的用法.自绘控件的意思是,这个控件上的内容是用onDraw函数绘制出来的.关于onDraw函数的介绍可参看 ...

  7. self.view.layer.contents 和 self.view.backgroundColor

    一. self.view.layer.contents 和 self.view.backgroundColor 今天测了一下 :    self.view.layer.contents 和 self. ...

  8. 【朝花夕拾】Android自定义View篇之(十)TouchSlop及VelocityTracker

    前言 在Android事件中,有几个比较基本的概念和知识点需要掌握.比如,表示最小移动阈值的TouchSlop,追踪事件速度的VelocityTracker,用于检测手势的GestureDetecto ...

  9. 自定义View(五),onLayout

    转自http://blog.csdn.net/a396901990/article/details/38129669 简介: 在自定义view的时候,其实很简单,只需要知道3步骤: 1.测量——onM ...

随机推荐

  1. 理解SVG坐标系统和变换: transform属性

    SVG元素可以通过缩放,移动,倾斜和旋转来变换-类似HTML元素使用CSS transform来变换.然而,当涉及到坐标系时这些变换所产生的影响必然有一定差别.在这篇文章中我们讨论SVG的transf ...

  2. Problems encountered while deleting resources.

    Error The project was not built due to “Problems encountered while deleting resources.”. Fix the pro ...

  3. lua package.path的使用

    需要用lua写一个工具,c++调用lua,然后这个lua要require其他lua脚本,在主lua里面设置package.path,但一直都失败,甚至lua都无法编译通过. project_path ...

  4. 在今天,我们为什么还要做一个CMS

    我们今天看到,在这个移动大潮席卷来的这几年,互联网以惊人的速度改变着这个世界.包括我们这个在中国互联网史上有重大影响力的“站长”,也几乎全军覆没.当然随着站长们兴起的开源CMS,到今天也都穷途末路了. ...

  5. 拉普拉斯特征图降维及其python实现

    这种方法假设样本点在光滑的流形上,这一方法的计算数据的低维表达,局部近邻信息被最优的保存.以这种方式,可以得到一个能反映流形的几何结构的解. 步骤一:构建一个图G=(V,E),其中V={vi,i=1, ...

  6. Kooboo中主要的几个关键词中的关系

    Kooboo中主要的几个关键词中的关系 Content Type  //相当于数据库表 Content      //相当于数据 View         //部分View 她可以使用Content ...

  7. Win7 64位 安装E10后 打不开的解决方案 -摘自网络

    但是后来发现点击IE图标没有任何反应,因此从网络上寻求帮助!将经验分享大家!进入注册表(运行regedit),找到 HKEY_CURRENT_USER\Software\Microsoft\Inter ...

  8. 代码修改mysql字符

    为了不再显示的时候乱码,要修改数据库默认编码.以下以GBK编码页面为例进行说明: 1.修改MYSQL的配置文件:my.ini里面修改default-character-set=gbk2.代码运行时修改 ...

  9. JS----JS调试技巧

    骨灰级调试大师Alert 那还是互联网刚刚起步的时代,网页前端还主要以内容展示为主,浏览器脚本还只能为页面提供非常简单的辅助功能的时候.那个时候,网页主要运行在以IE6为主的浏览器中,JS的调试功能还 ...

  10. 国外一些好用的UX/UI设计工具和资源分享

    国外一些好用的UX/UI设计工具和资源分享 你今天使用的设计工具也许不再适合以后的网页和APP设计项目了.新的工具不断的推出市场,目标只有一个,让你的工作更快.更容易而且工作成效更好.今天分享的这些U ...