View的getScrollX(),getScrollY(),getScrollBy(),getScrollTo()

关于View的ScrollTo, getScrollX 和 getScrollY 当利用 Scroller 去滑动屏幕或者扩展 ScrollView 的时候,总是会用到 getScrollX 和 getScrollY 去获取当前View 滑动到的位置,那么getScrollX() 和 getScrollY() 获取的到底是什么呢? 由于getScrollX 和 getScrollY 本质 上是一样的东西,下面只说明一下getScrollX, 一般是在屏幕上面左右划动的时候会去获取这个值。图上面,褐色的框,其实就是我们眼睛看到的手机界面,就是一个窗口。而绿色的长方体呢,就是一块可以左右拉动的幕布啦,其实也就是我们要显示在窗口上面的内容,它其实是可以很大的,大到无限大,只是没在窗口中间的,所以我们就看不到。 立即下载


图上面,褐色的框,其实就是我们眼睛看到的手机界面,就是一个窗口。

而绿色的长方体呢,就是一块可以左右拉动的幕布啦,其实也就是我们要显示在窗口上面的内容,它其实是可以很大的,大到无限大,只是没在窗口中间的,所以我们就看不到。

而getScrollX 其实获取的值,就是这块 幕布在窗口左边界时候的值了,而幕布上面哪个点是原点(0,0)呢?就是初始化时内容显示的位置。

所以当我们将幕布往右推动的时候,幕布在窗口左边界的值就会在0的左边(-100),而向左推动,则其值会是在0的右边(100)。

下面以一个实际例子来看一下。

我们在一个LinearLayout 里面定义了三个TextView 来显示 getScrollX() 的值,三个ImageView来显示图片, 都是指向同一张图片,布局如下:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="#000000"  
  6.     android:orientation="vertical" >  
  7.     <TextView  
  8.         android:id="@+id/textView"  
  9.         android:textColor="#FFFFFF"  
  10.         android:textSize="16sp"  
  11.         android:layout_height="wrap_content"   
  12.         android:layout_width="match_parent"/>  
  13.     <ImageView   
  14.         android:id="@+id/scrollImageView"  
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:src="@drawable/scroll_testing"  
  18.         android:contentDescription="Testing Scrolling"/>  
  19.     <TextView  
  20.         android:id="@+id/textViewToRight"  
  21.         android:textColor="#FFFFFF"  
  22.         android:textSize="16sp"  
  23.         android:layout_height="wrap_content"   
  24.         android:layout_width="match_parent"/>  
  25.     <ImageView   
  26.         android:id="@+id/scrollImageViewToRight"  
  27.         android:layout_width="wrap_content"  
  28.         android:layout_height="wrap_content"  
  29.         android:src="@drawable/scroll_testing"  
  30.         android:contentDescription="Testing Scrolling"/>  
  31.     <TextView  
  32.         android:id="@+id/textViewToLeft"  
  33.         android:textColor="#FFFFFF"  
  34.         android:textSize="16sp"  
  35.         android:layout_height="wrap_content"   
  36.         android:layout_width="match_parent"/>  
  37.     <ImageView   
  38.         android:id="@+id/scrollImageViewToLeft"  
  39.         android:layout_width="wrap_content"  
  40.         android:layout_height="wrap_content"  
  41.         android:src="@drawable/scroll_testing"  
  42.         android:contentDescription="Testing Scrolling"/>  
  43.   
  44. </LinearLayout>  

然后我们在Activity 中,分别对下面两张ImageView 进行 scrollTo 操作,然后获取其getScrollX()  的值,放到对应的TextView 上面,其代码如下:

[java]  view plain copy
  1. public class ScrollActivity extends Activity{  
  2.   
  3.     protected void onCreate(Bundle savedInstanceState){  
  4.         super.onCreate(savedInstanceState);  
  5.         setContentView(R.layout.scroll_layout);  
  6.           
  7.         ImageView imageView = (ImageView) findViewById(R.id.scrollImageView);  
  8.         TextView textView = (TextView) findViewById(R.id.textView);  
  9.         textView.setText("getScrollX() = " + imageView.getScrollX());  
  10.           
  11.         ImageView imageViewToRight = (ImageView) findViewById(R.id.scrollImageViewToRight);  
  12.         imageViewToRight.scrollTo(-100, 0);  
  13.         TextView textViewToRight = (TextView) findViewById(R.id.textViewToRight);  
  14.         textViewToRight.setText("getScrollX() = " + imageViewToRight.getScrollX());  
  15.           
  16.         ImageView imageViewToLeft = (ImageView) findViewById(R.id.scrollImageViewToLeft);  
  17.         imageViewToLeft.scrollTo(100, 0);  
  18.         TextView textViewToLeft = (TextView) findViewById(R.id.textViewToLeft);  
  19.         textViewToLeft.setText("getScrollX() = " + imageViewToLeft.getScrollX());  
  20.     }  
  21. }  

下面是运行后的效果

可以看到,正如上面所说的,向右滚动的时候,等于是把背后的幕布向右推动,使得没有内容的幕布(X < 0)显示出来, 而向左滚动,则是把幕左向左推动,让右边的内容(X > 0)移到窗口的左边缘上。

在View上面还一个叫ScrollBy的函数,跟ScrollTo的区别在于,ScrollTo 是 到那个位置,ScrollBy 是经过这段位置,这个从英文的To 跟 By 来理解就很简单了。getScrollY(),getScrollX()获取的是以新幕布为准距离屏幕远点的x,y 轴的距离。

P450酶催化循环的Amber-Gromacs混合模拟实战:从血红素加氧到产物释放 本文详细介绍了针对P450酶完整催化循环的Amber-Gromacs混合模拟实战策略。通过Amber为关键氧合血红素中间体(CPDI)构建精确力场,再利用Gromacs的高效GPU加速进行长时间尺度动力学模拟,完整覆盖从底物结合到产物释放的催化过程,为研究酶催化机制提供了强大的计算工具。 阅读详情

相关推荐

Windows平台COLMAP实战:从零到三维重建的避坑指南

本文详细介绍了在Windows平台上使用COLMAP进行三维重建的完整流程,包括安装指南、数据准备技巧、图形界面操作及常见问题解决方案。特别针对Windows用户提供了CUDA版本与非CUDA版本的性能对比,帮助用户高效完成从照片到三维模型的重建过程。

weixin_29090677的博客 189

Android getScrollX() 、scrollBy()、 scrollTo() 、getX、getRawX、getTranslationX等的图形表示

1、getScrollX() 原点(0,0)为view左上角的坐标点。实际移动的为view的内容而并非view本身,返回值为view的内容相对于view本身的水平或者垂直方向的偏移量。 getScrollX():原点X坐标减去view内容移动后 内容左上角X坐标(左移正,右移负) getScrollY():原点Y坐标减去view内容移动后 内容左上角Y坐标 (上移正,下移负) 2、scrollTo()、scrollBy() scrollTo()源码 /** ...

moyuxueyi的专栏 427

【GIS效率手册】告别C盘爆满:三步重置ArcMap默认地理数据库路径

本文针对ArcMap用户C盘空间常被占满的问题,提供了三步重置默认地理数据库路径的详细教程。通过修改地图文档属性,将数据存储位置从C盘迁移至其他驱动器,不仅能有效释放系统盘空间,还能提升数据管理效率与安全性,是GIS数据规范化管理的关键一步。

g2h3i4j5的博客 543

View 中的getScrollX()方法

getScrollX()方法的计算公式为: mScrollX+=滑动距离。(左滑为正,右滑为负,mScrollX为getScrollX()方法的返回值,默认为0) ex: 第一次左滑200个单位,getScrollX()的结果就等于:mScrollX=0+(+200)=200; 第二次右滑150个单位 , getScrollX()的结果就等于 :mScrollX=200+(-150)=50

zss1973的博客 982

3D视觉引导技术在机器人焊接中的应用

通过对比传统的2D视觉和3D视觉技术在焊接领域的应用差异,探讨了3D视觉引导技术在提高焊接精度、适应不规则工件形状和增强自适应能力方面的优势。本文对3D视觉引导技术在机器人焊接中的应用进行了深入探讨,总结了其在提高焊接精度、适应不规则工件形状和增强自适应能力方面的优势,并通过应用案例展示了其在焊接路径规划、焊缝检测和焊接质量控制等方面的重要作用。1. 提高焊接精度:3D视觉引导技术能够精确测量焊接工件的三维形状和位置,为机器人提供精准的焊接路径规划和跟踪,从而提高焊接精度。三、3D视觉引导技术概述。

2302_79273122的博客 1836

易智联LM401模块学习(一)——初识Lora

Lora

weixin_46046597的博客 1054

获取RecyclerView滑动的距离

如代码所述,totalDy的确保存了 RecyclerView 的滑动距离,但是当我向下滑动 RecyclerView ,之后插入/删除/移动 Item 的时候,totalDy 就变得不精确了;这是因为recyclerViewl.getChildAt(0) 返回的永远是第一个可见的child,不是所有view list 的第一个child,因此这种用法是得不到滑动距离的。依靠第一个item的滑动距离来进行动画的设置,但是根据该方法得出的 totalDy 在滑动到一定程度后清零。

Allence的博客 1625

基于STM32的工业I/O模块硬件电路实现

深入解析基于STM32的工业I/O模块硬件电路实现,涵盖关键电路设计与信号处理,突出硬件电路稳定性和工业级可靠性,适合嵌入式开发者参考。

weixin_35835018的博客 455

Android Recyclerview 滚动事件监听

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollSt...

sjhandrf的博客 3005

SAP PP未清生产订单关闭物料退料、新工单发料批量处理

( werks = '1001' lgort = 'A004' lgobe = '组装-成品组装' )( werks = '1002' lgort = 'C006' lgobe = '组装-二车间' )( werks = '1002' lgort = 'C007' lgobe = '组装-二车间' )( werks = '1001' lgort = 'A007' lgobe = '组装-MS' )( werks = '1001' lgort = 'A008' lgobe = '组装-GW' )

dingqing86的专栏 1192

中兴通讯招聘测评答题技巧,真题解析(附真题)

中兴招聘测评、中兴入职测评、中兴线上考试

guang221315221的博客 5803

Android RecyclerView实现侧滑删除

Android RecyclerView实现侧滑删除

QG 3044

人群仿真软件:Pathfinder_(14).与其他软件的集成与互操作

在人群仿真软件的二次开发中,与其他软件的集成和互操作是非常重要的。通过数据导入导出、接口调用和脚本编写,可以显著提升仿真的准确性和实用性。Pathfinder提供了多种数据格式的支持和丰富的API,使得与其他软件的集成变得简单高效。无论是建筑模型的导入、仿真结果的导出,还是实时数据的交换,Pathfinder都能满足用户的需求。

kkchenjj的博客 1017

recycleview关于获取滑动距离getscrollY为0,问题解决

关于recycleview获取滑动距离,官方的api 调用得到的是0。有大神有更简单直接的方法获取,欢迎告知。网上的方法都是千篇一律,有趣的很少。并不好用。于是乎,笔者就想只能自己 动手 看能不能做记录,开始的思路是这样的,保存每个条目的之前所有条目的总高度之和,然后取出用总高度之和 减去第一个 显示条目的gettop()获取到滑动距离。经过本人测试,正常速度滑动还可以,但是飞速滑动时候容易漏掉一...

qq_34169248的博客 6310

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()

Android系统手机屏幕的左上角为坐标系,同时y轴方向与笛卡尔坐标系的y轴方向想反。通过提供的api如getLeft , getTop, getBottom, getRight可以获得控件在parent中的相对位置。同时,也可以获得控件在屏幕中的绝对位置,详细用法可参考android应用程序中获取view的位置 当我们编写一些自定义的滑动控件时,会用到一些api如scrollTo(),scro

bigconvience的专栏 8万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

getScrollX()的理解

1、我在一个ViewGroup中添加图片。实际上ViewGroup的大小是超过屏幕的大小的 所以必然会隐藏了View,我缩写的demo是初始状态后, 首先只能向右滑动,然后才能向左滑动,回到初始状态。 2、初始点击时的x坐标-移动时得到的x坐标,movex是滑动的时候跟着变化的一个值,所以diff也是一个变化的值当手从A(20,80)向右 滑到

u014520797的专栏 5003

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

View中的getScrollX、getScrollY与getLeft、getRight 以及 MotionEvent中的getX、getY与getRawX、getRawY

一、Android中的坐标原点      屏幕的左上角:坐标系统原点(0,0)      原点向右延伸:X轴正方向  原点向下延伸:Y轴正方向  二、View中的getScrollX、getScrollY      getScrollX():当前视图相对于屏幕原点在X轴上的偏移量       getScrollY():当前视图相对于屏幕原点在Y轴上的偏移量

一杯苦芥的专栏 1132

Android getScrollX()详解

在开发中相信大家在自定义View时会时不时的使用getScrollX()方法,为了便于之后的开发工作,本篇博客主要记录了我对getScrollX()方法的理解。 getScrollX:Return the scrolled left position of this view意思是返回当前滑动View左边界的位置,其实获取的值就是这块幕布在窗口左边界时的x坐标,而幕布上面哪个点是原点(0,0)呢

znouy的博客 7216

Android View类中getScrollX()的说明

今天在读代码时遇到了getScrollX()这个函数,一开始理解错了,以为是横向滑动距离,结果走不通了 仔细查了一下原来是这个道理 我们知道手机屏幕左上角为原点(0,0) 创建一些子View的时候,就会有一些超过屏幕的区域,可正可负,如图所示 相关的几个方法如下: scrollTo():表示的是移动到哪个坐标点,坐标点的位置就会移动到屏幕原点的位置 sc

程序猿的专栏 2882

android View的ScrollBy ScrollTo getScrollX getScrollY,安卓高级面试题及答案

针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!Android前沿技术大纲全套体系化高级架构视频Android高级架构资料、源码、笔记、视频。

2401_84149916的博客 636

Android RecyclerView实现侧滑删除,附 Demo

距上次写博客有半年多了,回忆起来都觉得不可思议,中间也想憋俩大招,总是被耽误,这俩月忙完之后,终于空下来了,恰好新项目我和UI俩人商量一下,用MD来实现app。中间有个需求是RecyclerView中侧滑显示删除按钮,点击删除。于是就有了这篇博客。

u013749113的博客 1371

控件的滚动实现

继承ViewGroup,实现RecyclerView的滑动效果

zhufeng1222的专栏 866

Android getScrollX()函数

自定义view时需用到getScrollX ()。一直不知道它得到的到底是什么。 现在有点头绪了。 看英文解释:int getScrollX () Return the scrolled left position of this view. This is the left edge of the displayed part of your view. You do not need to

fxjzzyo的博客 1797

Android 原生控件之二 ImageView

Android 原生控件之二 ImageView相关来源开始XML属性1、android:adjustViewBounds2、android:baseline3、android:baselineAlignBottom4、android:cropToPadding5、android:maxHeight6、android:maxWidth7、android:scaleType8、android:src...

杨迪龙的博客 784
上一篇: 图片加载问题
下一篇: SwipeListView
android_zzj
博客等级 码龄11年 0粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值