Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中的SrollView滾動詳解

Android中的SrollView滾動詳解

編輯:關於Android編程

今天開發遇到一個需求就是ScrollView中嵌套一個ListView,同時需要實現滑動到底部自動加載更多,我們知道ListView滑動到底部簡單實現onScrollListener()監聽器即可,但是ScrollView中沒有這麼方便了,這個時候需要從寫ScrollView組件;

public class ScrollBottomScrollView extends ScrollView {

public ScrollBottomScrollView(Context context) {
super(context);
}

public ScrollBottomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public ScrollBottomScrollView(Context context, AttributeSet attrs,int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt){
Log.e("Range", computeVerticalScrollRange()+"");
if(t + getHeight() >= computeVerticalScrollRange()){
//滑動到底部,doSomething();
}
}

}

注意:

1.computeVeritcalScrollRange()方法是獲取ScrollView中子布局的實際高度(可能超過屏幕的高度)

2.t是代表ScrollView滑動停止之後距離屏幕頂部的距離,getHeight方法是獲取ScrollView的高度(不包括超出屏幕的高 度),這樣如果 滑動的距離在加上ScrollView的高度大於等於ScrollView中子布局的實際高度,說明ScrollView不能再 滑動了,就停 止了。


下面在看一下怎麼實現ScrollView自動滾動,並且滾動到底部停止了:

final int off = layout.getHeight() - scroll.getHeight();

scroll.post(new Runnable(){
@Override
public void run() {
scroll.scrollBy(0,1);
if(scroll.getScrollY() == off){
Thread.currentThread().interrupt();
}else{
scroll.post(this);
}

}});

layout是ScrollView的子布局(我們知道ScrollView中只能有一個子布局),變量off就是ScrollView能夠滑動的距離是多少。其實這裡的layout.getHeight()獲取到的值和上面的computeVeritcalScrollRange()方法返回的值一樣的,就是ScrollView子布局的實際高度(包括超出屏幕的高度),同時這裡的off其實就是ScrollView滑動停止之後的上面的t值,在這裡使用post方法,進行更新布局,同時這裡還有一個方法就是scroll.scrollBy()這個方法,這個方法顧名思義就是scroll滑動的位移值(第一參數是left,第二個參數是top),同時它還有一個方法就是scrollTo()方法,這個意思也很明確,就是scroll滑動到指定的位置,還有就是scroll.getScrollY()方法是scroll在Y坐標上滑動的距離(高度),這樣實現自動滾動的原理就明確了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved