需要图片集请点赞关注收藏后评论区留言~~~
一、利用滚动器实现平滑翻页
在日常生活中,平移动画比较常见,有时也被称为位移动画,左右翻页和上下滚动其实都用到了平移动画,譬如平滑翻书的动画效果,就是位移动画的一种应用,用户先通过手势拉动书页,不等拉到底就松开手指,此时App需要判断当前书页是继续向前滚动还是往后缩回去。倘若书页的拉动距离超过屏幕宽度的一半,那么无疑应当继续前滚动到底,倘若书页的拉动距离尚未达到屏幕宽度的一般,那么应当往相反方向缩回去。对于这种向前滚动抑或是向后滚动的判断处理,除了利用补间动画之外,还能借助滚动器加以实现。
滚动器不但可以实现平滑滚动的效果,还能解决拖曳时卡顿的问题 下面是常用方法
startScroll 设置开始滑动的参数
computeScrollOffset 计算滑动偏移量
getCurrX 获得当前的横坐标
getCurrY 获得当前的纵坐标
getFinalX 获得最终的横坐标
forceFinished 强行停止滑动
isFinished 判断滑动是否结束
在自定义的滚动布局中,需要重写onTouchEvent方法,分别记录手势按下和松开时对应的起点和终点,再计算两点在水平方向上的位移是否超过屏幕宽度的一半,超过则往前翻页,未超过则往后缩回
效果如下
代码如下
Java类
package com.example.animation; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class ScrollerActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scroller); } }
XML文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:gravity="center" android:text="请左右滑动以下图像,然后观察滚动结果" android:textColor="@color/black" android:textSize="17sp" /> <com.example.animation.widget.ScrollLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00ff00" /> </LinearLayout>