scrollTo和scrollBy的用法及区别

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

-10px

在java文件中这样调用

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

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

scrollTo和scrollBy的用法及区别_第1张图片

代码如下




    
    
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的用法及区别)