이 소스를 보시고 도움이 되셨다면 저를 만나게 되신다면 쵸코렛을 사주시기 바랍니다.

 

병아리 유치원생이 짠 것 같은 코드이기 때문에

 

출처 표기를 하실 필요도 없으며 수정 및 배포도 자유입니다.

 

 

 ScrollView sv ;
 public void setScrollPager( )
 {
  /// 스크롤뷰 얻기
  sv = (ScrollView)findViewById( R.id.scrollView1 ) ;
  
  /// 스크롤뷰에 터치 리스너 설치
  sv.setOnTouchListener( new OnTouchListener( )
  {
    
   @Override
   public boolean onTouch(View v, MotionEvent event)
   {
    /// 터치업 이벤트일 경우 처리
    if( event.getAction() == MotionEvent.ACTION_UP )
    {
     /// 현재 스크롤 위치에서
     /// ( (int)( 현재위치 + ( 아이템의 높이 / 2 ) / 아이템의높이 ) * 아이템의 높이 ) 로 이동시켜야함
     /// 핸들러에 전달
     hd.sendEmptyMessage( ((int)((sv.getScrollY( ) + 100 ) / 200)) * 200 ) ; 
    }
    
    return false;
   }
  } ) ;
  
    }
   
    Handler hd = new Handler( )
    {
     public void handleMessage(android.os.Message msg)
     {
  /// 현재 위치와 목표 위치의 3분의 1 지점만큼 이동시킨다.
      int pos = ( msg.what - sv.getScrollY() ) / 3 ;
  /// 만약 차이가 10px이하면 정확한 목표지점으로 이동시킨다.
      if( Math.abs( pos ) > 10 )
      { /// 목표지점으로 이동 By함수 사용
       sv.scrollBy( sv.getScrollX(), pos ) ;
       ///Log.d( "==--==", " y : " + sv.getScrollY() + "   to : " + msg.what  + "   pos : " + pos ) ;
   /// 0.02초마다 재귀한다.
       hd.sendEmptyMessageDelayed( msg.what, 20 ) ;
      }
      else
      {
   /// 이동하는 거리가 10 이하면 정확한 위치로 이동한다.
       sv.scrollTo( sv.getScrollX(), msg.what ) ;
      }
     } ;
    } ;

 

 

//// 자기 자신이 실제 차지하고있는 영역의 사이즈 구하는 함수
getMeasuredHeight( ) ;

 

profile

킈킈