android ScrollView怎么实现水平滑动回弹
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍"android ScrollView怎么实现水平滑动回弹"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"android ScrollView怎
千家信息网最后更新 2025年01月21日android ScrollView怎么实现水平滑动回弹
这篇文章主要介绍"android ScrollView怎么实现水平滑动回弹"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"android ScrollView怎么实现水平滑动回弹"文章能帮助大家解决问题。
效果图:
主要代码:
import android.content.Context;import android.graphics.Rect;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.animation.TranslateAnimation;import android.widget.HorizontalScrollView; /** * ScrollView水平滑动回弹 * * @author qhg * @date 2014年3月12日 * */public class MHorizontalScrollView extends HorizontalScrollView { private View view; /** * 移动时的增量 */ private static final int deltaX = 1; private Rect normalRt = new Rect(); public MHorizontalScrollView(Context context) { super(context); } public MHorizontalScrollView(Context context, AttributeSet attrs) { super(context, attrs); } /** * 在xml布局执行完后执行此方法 */ protected void onFinishInflate() { if (getChildCount() > 0) { view = getChildAt(0); } } @Override public boolean onTouchEvent(MotionEvent event) { if (view != null) { onTouchEventImpl(event); } return super.onTouchEvent(event); } private void onTouchEventImpl(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_MOVE: // 在当前视图内容继续偏移(x , y)个单位,显示(可视)区域也跟着偏移(x,y)个单位 scrollBy(deltaX, 0); // 当滚动到最左或最右时就不会再滚动,这时移动布局达到回弹效果 if (isLayoutMove()) { if (normalRt.isEmpty()) { // 保存当前正常的布局位置,拉过头才能回弹到正常位置 normalRt.set(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); } // 移动布局 view.layout(view.getLeft() - deltaX, view.getTop(), view.getRight() - deltaX, view.getBottom()); } break; case MotionEvent.ACTION_UP: if (isNeedAnimation()) { animationImpl(); } break; default: break; } } /** * 动画移动 */ private void animationImpl() { // 移动动画 TranslateAnimation ta = new TranslateAnimation(view.getLeft(), normalRt.left, 0, 0); // 动画持续时间 ta.setDuration(50); view.startAnimation(ta); // 设置回到当前正常的布局位置 view.layout(normalRt.left, normalRt.top, normalRt.right, normalRt.bottom); normalRt.setEmpty(); } /** * 是否需要开启动画 * * @return */ private boolean isNeedAnimation() { return !normalRt.isEmpty(); } /** * 是否需要移动布局 * * @return */ private boolean isLayoutMove() { int offset = view.getMeasuredWidth() - getWidth(); if (offset <= 0) { return false; } // 上面已固定deltaX=1,scrollX永远等于1所以向右拉不动 // 但当向左拉动到内容布局的最右端时scrollX == offset时还可以继续拉动 int scrollX = getScrollX(); if (scrollX == 0 || scrollX == offset) { return true; } return false; } }
在xml布局文件里直接使用:
关于"android ScrollView怎么实现水平滑动回弹"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
布局
移动
水平
动画
位置
内容
知识
单位
效果
行业
偏移
不同
实用
过头
代码
区域
增量
实用性
实际
效果图
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器内轨拆卸
我的世界手游2b2t服务器教学
上海智能化网络技术转让价目表
ctf网络安全大赛网站源码
西宁网络技术哪家强
toad连接数据库
机关事业单位网络安全方案
软件开发如何从零学起
天津软件开发计划
思科网络安全第四章答案
人员定位怎么删除数据库
虚拟服务器建网站
软件开发企业所得税很高
猎鹰网络安全
人脸录入到全国数据库要多久
笔记本怎样搜索局域网服务器
软件开发什么行业发展
网络安全态势感知公司
如何扫描服务器
合肥阿拉丁网络技术有限公司
永达网络技术有限公司
网络安全与保密有效应对
中国是否有网络安全部队
泸州广播电视台网络安全
联想笔记本的生产数据库
平谷区专业网络技术服务保障
旅游网站数据库设计
乌镇互联网之光博览会黑科技
华为服务器固态硬盘怎么安装图解
相册数据库