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'
}
Attrs
<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>
Sample데모 주소: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();
}
github 주소:https://github.com/Dawish/FlymeTabStrip이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.