美文网首页
scrollTo和scrollBy的用法及区别

scrollTo和scrollBy的用法及区别

作者: 名字_都被占了 | 来源:发表于2018-04-18 00:27 被阅读0次

    主要知识点: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

    相关文章

      网友评论

          本文标题:scrollTo和scrollBy的用法及区别

          本文链接:https://www.haomeiwen.com/subject/tvymkftx.html