Android 사용자 정의 View Flyme 6 뷰 페이지 표시 기
 
 Gradle
JitPack v1.0.2
allprojects {
 repositories {
  maven { url 'https://jitpack.io' }
 }
}
dependencies {
 compile 'com.github.Dawish:FlymeTabStrip:v1.0.2'
}
 <declare-styleable name="FlymeTabStrip">
  <!--       -->
  <attr name="indicatorHeight" format="dimension" />
  <!--          -->
  <attr name="indicatorColor" format="color" />
  <!--         -->
  <attr name="indicatorMargin" format="dimension" />
  <!--         -->
  <attr name="indicatorTextColor" format="color" />
  <!--         -->
  <attr name="indicatorTextSize" format="dimension" />
  <!--              -->
  <attr name="selectedIndicatorTextSize" format="dimension" />
 </declare-styleable>
데모 주소:https://github.com/Dawish/FlymeTabStrip/tree/master/samples
코드 해석
인디케이터 의 애니메이션 효 과 는 주로 Viewpager 의 미끄럼 모니터 에 의존 합 니 다.Viewpager 가 미 끄 러 지 는 과정 에서 컨트롤 만 다시 그리 면 인디케이터 의 변위 와 애니메이션 크기 조정 효 과 를 실현 할 수 있 습 니 다.우선 ViewPager 의 세 가지 스크롤 감청 방법 을 설명해 드 리 겠 습 니 다.
 /**
  * viewPager      
  *
  */
 private class PagerStateChangeListener implements OnPageChangeListener {
  /**
   * viewpager    
   * @param state
   */
  @Override
  public void onPageScrollStateChanged(int state) {
   if (state == ViewPager.SCROLL_STATE_IDLE) { // 0      pager      
    scrollToChild(viewPager.getCurrentItem(), 0);
   }else if(state == ViewPager.SCROLL_STATE_SETTLING){ // 2       ,      ,pager       pager   
   }else if(state == ViewPager.SCROLL_STATE_DRAGGING){ // 1 viewpager     ,       
   }
  }
  /**
   * viewpager    ,        
   *    ,              
   * @param position     
   * @param positionOffset           
   * @param positionOffsetPixels           
   */
  @Override
  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
   currentPosition = position;
   currentPositionOffset = positionOffset;
   //             ,scrollToChild     ondraw  ,        ,         
   scrollToChild(position, (int) (positionOffset * container.getChildAt(position).getWidth()));
   invalidate();
  }
  /**
   * page    
   * @param position           
   */
  @Override
  public void onPageSelected(int position) {
   //         
   selectedPosition = position;
   //        
   updateTabStyle();
  }
 }
  /**
   * viewpager    ,        
   *    ,              
   * @param position     
   * @param positionOffset           
   * @param positionOffsetPixels           
   */
  @Override
  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
   currentPosition = position;
   currentPositionOffset = positionOffset;
   //             ,scrollToChild     ondraw  ,        ,         
   scrollToChild(position, (int) (positionOffset * container.getChildAt(position).getWidth()));
   invalidate();
  }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.