view体系

本文详细介绍了Android中View的坐标系统,包括如何获取View相对于父控件的位置。同时,总结了实现View滑动的六种方法,如布局调整、偏移量设置、LayoutParams更改以及使用Scroller和属性动画。通过属性动画,可以实现更丰富的视图动态效果,包括组合动画的控制。
摘要由CSDN通过智能技术生成

一、视图座标系
在视图座标中我们可以通过如下方法可以获得View到其父控件(ViewGroup)的距离:

方法解释
getTop()获取View自身底边到其父布局顶边的距离
getLeft()获取View自身左边到其父布局左边的距离
getRight()获取View自身右边到其父布局左边的距离
getBottom()获取View自身底边到其父布局顶边的距离

无论是View还是ViewGroup,最终的点击事件都会由onTouchEvent(MotionEvent event)方法来处理,MotionEvent也提供了各种获取焦点坐标的方法:

方法解释
getX()返回值为getLeft()+getTranslationX(),当setTranslationX()时getLeft()不变,getX()变。
getY()返回值为getTop()+getTranslationY(),当setTranslationY()时getTop()不变,getY()变。
getRawX()获取点击事件距离整个屏幕左边距离,即绝对坐标
getRawY()获取点击事件距离整个屏幕顶边的的距离,即绝对坐标

二、实现View滑动的六种方法

  • 使用layout的方法;
  • 使用offsetLeftAndRight()与offsetTopAndBottom();
  • 使用LayoutParams();
  • 使用scrollTo()与scrollBy();
  • 使用Scroller类
  • 使用属性动画

1.使用onLayout的方法可以试着view的位置,那么我们就可以通过改变left,right,top,bottom来使View移动,结合MontionEvent来实现view跟着手指的滑动移动。

2.使用offsetLeftAndRight()与offsetTopAndBottom()
和Layout方法一样,都是对左上右下移动的一个封装

  • offsetLeftAndRight()是对左右的一个封装
  • offsetTopAndBottom()是对上下的一个封装

3.使用LayoutParams()
我们可以使用LayoutParams的方法来实现view的移动,LayoutParams可以设置view的位置,也可以通过geLayoutParams方法来获得当前view的位置。自然也可以使用setLayoutParams方法来修改View的位置,结合TouchEvent方法就可以让View进行变动。

a: 获取偏移量的方法和前两个一样,
b:这里的LayoutParams,是根据父类的类型来定的。LinearLayout.LayoutParams 、RelativeLayout.LayoutParams 等
在这里插入图片描述
这里主要分使用两种方式一种是getX,getY,(注释部分) 。一种是getRawX,getRawY(非注释部分)来获取触摸点的坐标
A:每次调用onTouchEvent的时候都来获取一下触摸点的坐标
B:在按下的时候记录一下触摸点的坐标
C:在move的事件的时候进行,进行偏移量的计算。
D:这里有一点不一样就是使用getRawX,和getRawY的时候需要最后重新设置初始坐标,因为他相对于屏幕而言的,所以每次都需要重新设置赋值。

三、属性动画
实现动画效果在Android开发中非常常见,因此Android系统一开始就提供了两种实现动画的方式:

  • 逐帧动画(Frame Animation)
  • 补间动画( Tweened animation )

动画的监听
完整的动画具有start,Repeat,End,Cancel四个过程:
在这里插入图片描述
组合动画
AnimatorSet这个类提供了一个play()方法,如果我们向这个方法中传入一个Animator对象(ValueAnimator或ObjectAnimator)将会返回一个AnimatorSet.Builder的实例,AnimatorSet.Builder中包括以下四个方法:

1.after(Animator anim) after中的动画先执行, 之后才是play中的动画.
2.after(long delay) after中设置时间, 那么play中的动画会根据时间延迟执行.
3.before(Animator anim) before中的动画后执行, play中的先执行.
4.with(Animator anim) play中的动画和with中的一同执行.
6.playTogether() 中间可以放入要一起执行的全部动画, 之后不可接 after(), before()这些函数.
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值