scrollTo和scrollBy的用法及区别

主要知识点:scrollTo是绝对滚动(以view的内容的中心为原点,如果x为负值,则向右滚,y为负值向下滚),scrollBy是相对滚动,他们的相同点就是滚动的都是view中的内容,而不是view本身,view本身的getX,getY方法得到的值是不会变的,注意现在版本中scrollTo和scrollBy中的值不允许是 负值,可以通过如下方法达到负值的效果,在dimens.xml文件中新建尺寸

<dimen name="fushu">-10px</dimen>

在java文件中这样调用

button0.scrollBy(0, getResources().getDimensionPixelSize(R.dimen.fushu));

再来一张图片,更好的理解x,y取值所对应的滚动方向

代码如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_alignParentBottom="true"
        android:id="@+id/lin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <Button
        android:layout_weight="1"
        android:text="scrollTo(10,0)"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"/>

    <Button
        android:layout_weight="1"
        android:text="scrollBy(10,0)"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button2"/>
        <Button
            android:layout_weight="1"
            android:text="scrollTo(0,10)"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button3"/>

        <Button
            android:layout_weight="1"
            android:text="scrollBy(0,10)"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button4"/>
        <Button
            android:layout_weight="1"
            android:text="scrollBy(0,-10)"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button5"/>
</LinearLayout>
    <Button
        android:layout_above="@id/lin"
        android:background="@color/colorAccent"
        android:text="button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/button0"/>
</RelativeLayout>
public class CeShi extends BaseActivity {
    @BindView(R.id.button0)
    Button button0;
    @BindView(R.id.button)
    Button button;
    @BindView(R.id.button2)
    Button button1;
    @BindView(R.id.button3)
    Button button2;
    @BindView(R.id.button4)
    Button button3;
    @BindView(R.id.button5)
    Button button4;
    @Override
    public int getView() {
        return R.layout.ceshi;
    }

    @Override
    public void initData() {
        ButterKnife.bind(this);
    }
    @OnClick(value = R.id.button)
    public void danJia(){
        button0.scrollTo(10,0);
        Log.d("CeShi", button0.getX() + "," + button0.getY());//注意这里getX和getY获取到的值永远都不会变,
        //因为scrollTo和scrollBy移动的是view中内容的位置,而不是view的位置
    }
    @OnClick(value = R.id.button2)
    public void danJia1(){
        button0.scrollBy(10,0);
    }
    @OnClick(value = R.id.button3)
    public void danJia2(){
        button0.scrollTo(0,10);
    }
    @OnClick(value = R.id.button4)
    public void danJia3(){
        button0.scrollBy(0,10);
    }
    @OnClick(value = R.id.button5)
    public void danJia4(){
        button0.scrollBy(0, getResources().getDimensionPixelSize(R.dimen.fushu));
    }
}

参考文章:
https://blog.csdn.net/wuchuang127/article/details/39472493

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内容是博主照着书敲出来的,博主码字挺辛苦的,转载请注明出处,后序内容陆续会码出。 当了解了Android坐标系和触...
    Blankj阅读 11,683评论 3 60
  • 什么是View View 是 Android 中所有控件的基类。 View的位置参数 View 的位置由它的四个顶...
    acc8226阅读 5,028评论 0 7
  • View的事件体系(2) 掌握滑动的方法是实现绚丽的自定义控件的基础。通过三种方式可以实现View的滑动: 1 是...
    努力生活的西鱼阅读 3,517评论 0 0
  • Scroller Scroller是一个专门用于处理滚动效果的工具类,例如ViewPager,ListView等控...
    狮_子歌歌阅读 3,795评论 0 1
  • 图片发自简书App 1 距乌鲁木齐七十余公里,有一梧桐镇,是农垦六师102团的驻地。据出租车司机说,加上流动人口,...
    自在宽哥阅读 4,310评论 0 2