Android 에서 Viewpager 가 미 끄 러 지 는 것 을 금지 합 니 다.

머리말
현재 많은 app,첫 페이지 에서 미끄럼 전환 을 허용 하지 않 습 니 다(페이지 로 딩 때 문 입 니 다).하지만 view page 로 frgament 를 관리 합 니 다.편리 하 니까 요.
예전 에 인터넷 에서 찾 았 던 예:

public class NoScrollViewPager extends ViewPager { 
 public NoScrollViewPager(Context context, AttributeSet attrs) { 
  super(context, attrs); 
 } 
public NoScrollViewPager(Context context) { 
 super(context); 
 } 
 @Override 
 public boolean dispatchTouchEvent(MotionEvent ev) {  
 //   ,            ,               
 return super.dispatchTouchEvent(ev); 
 } 
@Override
 public boolean onInterceptTouchEvent(MotionEvent ev) { 
 return super.onInterceptTouchEvent(ev);
 } 
 @Override
 public boolean onTouchEvent(MotionEvent ev) { 
  return true;
 }
이 사용자 정의 가 계승 하 는 Viewpager 가 낮은 버 전이 라면 문제 없습니다.
하지만 컴 파일 할 때 높 은 버 전의 api 를 사용 하면 5.0 이후 에 이 사용자 정의 가 실 효 됩 니 다.
너 는 미세한 미끄럼 이 있 을 것 이라는 것 을 알 게 될 것 이다.그래도 미 끄 러 질 수 있 을 것 이다.
오래된 것 인지 새 것 인지 판단 하려 면 setOnPageChange Listener 를 보면 알 수 있 습 니 다.
최신 Viewpager 에서 이 방법 은 이미 폐기 되 었 고addOnPageChangeListener()로 바 뀌 었 습 니 다.
이전에 viewpager 를 게 으 른 로 딩 으로 바 꾸 었 기 때문에 오래된 버 전의 Viewpager 를 사용 해 왔 습 니 다.최근 에 야 발견 되 었 습 니 다.
개선 후

public class NoScrollViewPager extends ViewPager { 
private boolean isScroll;
public NoScrollViewPager(Context context,AttributeSetattrs{ 
 super(context, attrs); 
 } 
 public NoScrollViewPager(Context context) {  
  super(context); 
 } 
/** 
 * 1.dispatchTouchEvent        
 *,           ,           
 */ 
 @Override
 public boolean dispatchTouchEvent(MotionEvent ev) {      
  return super.dispatchTouchEvent(ev); // return true;   
 } 
 /** 
 *      
 *   :      onTouchEvent      
 *    :         
 */ 
 @Override
 public boolean onInterceptTouchEvent(MotionEvent ev) {
 // return false;//  ,     ,
  // return true;//  ,        
  //return super.onInterceptTouchEvent(ev);//  ,       
 if (isScroll){ 
   return super.onInterceptTouchEvent(ev);
 }else{ 
   return false;
 } 
} 
 /** 
 *        
 *   :      
 *    :      
 */ 
@Override 
 public boolean onTouchEvent(MotionEvent ev) { 
 //return false;//   ,   ,      
 //return true;//   ,  ,     
 //super.onTouchEvent(ev); //  ,
 //  onInterceptTouchEvent    ,
 //    viewpage       viewgroup,         . 
 if (isScroll){
   return super.onTouchEvent(ev);
 }else { 
   return true;//   ,  ,    
 }
 }
 public void setScroll(boolean scroll) {
  isScroll = scroll;
 }
}
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기