热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android实现滑动方法总结

这篇文章主要介绍了Android实现滑动方法总结的相关资料,需要的朋友可以参考下

Android 实现滑动方法总结

              本文对Android 滑动提供了七种方法,对于每一种实现方法都进行了详细介绍,按照需要大家可以参考下,

1.1  用Layout方法

   我们知道,当view在绘制时会调用onlayout方法来设置显示位置。同样也可以通过view的left、top, right,buttom 四个属性来控制view的坐标。每次在ontouchevent的时候,我们都要获取一下触摸点的坐标。

@Override 
 public boolean onTouchEvent(MotionEvent event) { 
  int x = (int) event.getX(); 
  int y = (int) event.getY(); 
  switch (event.getAction()) { 
   case MotionEvent.ACTION_DOWN: 
    lastX = x; 
    lastY = y; 
    break; 
   case MotionEvent.ACTION_MOVE: 
    int offsetx = (int) (x - lastX); 
    int offsety = (int) (y - lastY); 
    layout(getLeft() + offsetx, getTop() + offsety, getRight() + offsetx, getBottom() + offsety); 
//重新获取偏移量,在获取绝对坐标的时候需要非常注意,因为如果这里不注意的话容易获取错误的坐标 
    lastX = x; 
    lastY = y; 
 
    break; 
  } 
 
  return true; 
 } 

1.2 使用offsetLeftAndRight(),offsetTopAndBottom()

这个只要知道偏移量就可以使用此方法来进行宠幸绘画。相当于对左右偏移和上下偏移做了一个封装。

1.3 使用layoutparms来实现view的移动

这个要注意的是必须使用父布局类型的layoutpamrs,不然这里将会出错;当然有更简便的方法,如果使用viewgroup.marginlayoutParams就不需要考虑父控件您的类型了。

1.4 使用scrollyTo和scrollBy来实现

在view 中,系统提供了scrollyTo和scrollyBy两个方法来改变view的位置。这两个方法非常好理解,scrollyto是移动到一个指定的位置,scrollyBy是移动的是view的一个偏移量,他实际上也调用了scrollyTo方法。他们只能改变view的内容布局,而不能改变view本身的位置,并没有实现真正意义上的滑动,他改变的是内容的位置。如果在viewgroup中使用它移动的是所有的子view,而在view中使用,他移动的是view的内容。还有就是他们的移动都是瞬间完成的,在事件触发时就已经完成了。

1.5 使用scroller

通过scrooler我们可以平滑的移动view,

1.6属性动画

1.7 viewdraghelper

通过viewdragHelper我们基本可以实现各种动画操作。但是他的使用方法比较复杂:

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 了解责任的苦与乐,是人生的重要课题。本文精选了一系列关于责任的经典语录,帮助读者更深入地理解责任感的重要性,并从中汲取力量。更多相关内容,请继续阅读。 ... [详细]
  • 本文详细介绍如何在 iOS 7 环境下申请苹果开发者账号,涵盖从访问开发者网站到最终激活账号的完整流程。包括选择个人或企业账号类型、付款方式及注意事项等。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 解决MacOS上Android Studio Gradle版本不匹配问题
    在MacOS系统中,升级Android Studio后可能会遇到Gradle版本不兼容的问题。当网络下载更新受阻时,可以使用本地已安装的Gradle版本来解决问题。本文将详细介绍如何配置本地Gradle环境以确保开发工作的顺利进行。 ... [详细]
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
author-avatar
沙胆建筑_829
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有