스크롤 뷰 가 맨 밑 이나 맨 위로 미 끄 러 지면 데 이 터 를 불 러 옵 니 다.
4042 단어 android
http://stackoverflow.com/questions/2864563/how-do-i-know-that-the-scrollview-is-already-scrolled-to-the-bottom
데이터 가 한 페이지 미 만 이면 onBottom 방법 을 실행 합 니 다!보통 게 으 름 으로 불 러 오 면 데이터 가 한 페이지 를 넘 기 때문에 나 는 이 문 제 를 자세히 고려 하지 않 았 다!
스크롤 뷰 를 클래스 로 봉 인 했 습 니 다.원본 코드 는 다음 과 같 습 니 다.
package com.ql.view;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;
public class LazyScrollView extends ScrollView{
private static final String tag="LazyScrollView";
private Handler handler;
private View view;
public LazyScrollView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public LazyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public LazyScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
//
public int computeVerticalScrollRange(){
return super.computeHorizontalScrollRange();
}
public int computeVerticalScrollOffset(){
return super.computeVerticalScrollOffset();
}
private void init(){
this.setOnTouchListener(onTouchListener);
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
// process incoming messages here
super.handleMessage(msg);
switch(msg.what){
case 1:
if(view.getMeasuredHeight() <= getScrollY() + getHeight()) {
if(onScrollListener!=null){
onScrollListener.onBottom();
}
}else if(getScrollY()==0){
if(onScrollListener!=null){
onScrollListener.onTop();
}
}
else{
if(onScrollListener!=null){
onScrollListener.onScroll();
}
}
break;
default:
break;
}
}
};
}
OnTouchListener onTouchListener=new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
if(view!=null&&onScrollListener!=null){
handler.sendMessageDelayed(handler.obtainMessage(1), 200);
}
break;
default:
break;
}
return false;
}
};
/**
* View, MeasuredHeight, ScrollY+getHeight 。
*/
public void getView(){
this.view=getChildAt(0);
if(view!=null){
init();
}
}
/**
*
* @author admin
*
*/
public interface OnScrollListener{
void onBottom();
void onTop();
void onScroll();
}
private OnScrollListener onScrollListener;
public void setOnScrollListener(OnScrollListener onScrollListener){
this.onScrollListener=onScrollListener;
}
}
사용 할 때 도 간단 합 니 다.보통 이렇게 사용 합 니 다.
scrollView=(LazyScrollView)findViewById(R.id.scrollView);
scrollView.getView();
scrollView.setOnScrollListener(new OnScrollListener() {
@Override
public void onTop() {
// TODO Auto-generated method stub
Log.d(tag,"------ ------");
}
@Override
public void onScroll() {
// TODO Auto-generated method stub
Log.d(tag," , ");
}
@Override
public void onBottom() {
// TODO Auto-generated method stub
Log.d(tag,"------ ------");
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.