2012.11.07 17:01

핵심은 이곳을 참조하시고..~

http://blog.svpino.com/2011/08/disabling-pagingswiping-on-android.html


일단 ViewPager를 상속받은 유틸 클래스를 만들어줍니다.

import java.io.PrintWriter;

import java.io.StringWriter;


import android.content.Context;

import android.support.v4.view.ViewPager;

import android.util.AttributeSet;

import android.util.Log;

import android.view.MotionEvent;



//스크롤 막는 ViewPager

public class CustomViewPager extends ViewPager {


private boolean enabled; //이 것이 스크롤을 막아주는 중요 변수!


public CustomViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

this.enabled = true;

}


@Override

public boolean onTouchEvent(MotionEvent event) {

try {

if (this.enabled) {

// Log.i("INFO", "스크롤 중..");

return super.onTouchEvent(event);

}

catch (Exception e) {

StringWriter sw = new StringWriter();

        e.printStackTrace(new PrintWriter(sw));

        String exceptionAsStrting = sw.toString();

        Log.e("INFO", exceptionAsStrting);

}



return false;

}


@Override

public boolean onInterceptTouchEvent(MotionEvent event) {

if (this.enabled) {

return super.onInterceptTouchEvent(event);

}


return false;

}


public void setPagingEnabled() { //이 메소드를 이용해서 스크롤을 풀어주고

this.enabled = true;

}


public void setPagingDisabled() { //이 메소드를 이용해서 스크롤을 막아줍니다.

this.enabled = false;

}


} 


선언이 끝났으면 실제 소스에 반영합니다.

예를 들어 다음 페이지로 스크롤 할 때 스크롤이 다 끝날 때 까지는 스크롤을 막아주기 위해 유틸 클래스에서 정의한 메소드를 이용해서 처리해줍니다.

     private void nextPage(){

  

      vp_main.setPagingDisabled();

      

      Handler handler = new Handler(){

  public void handleMessage(Message msg){

  vp_main.setPagingEnabled();

vp_main.getAdapter().notifyDataSetChanged();

  }

  };

  handler.sendEmptyMessageDelayed(0, 400);   

     } 




신고
Posted by 그린블로그 DEV그린