scrollTo和scrollBy的用法及区别

2018-04-18  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读