2015-04-02 23 views
0

您好我正在使用PagerSlidingTabStrip在viewpager中顯示選項卡。當用戶從第一個片段滑動到第二個片段時,我必須將指示器的顏色從紅色更改爲綠色。顏色的過渡必須平滑。但我無法決定如何做到這一點。請幫忙 !!! 提前致謝!PagerSlidingTabStrip改變指標的顏色

回答

0

試試這個!

int NTABS = 2; 
int[] COLORS = { 0xFFFF0000, 0xFF00FF00 }; // COLORS.length == NTABS 

mPagerSlidingTabStrip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     mPagerSlidingTabStrip.setIndicatorColor(getNewColor(position, positionOffset)); 
    } 

    @Override public void onPageSelected(int position) { 

    } 

    @Override public void onPageScrollStateChanged(int state) { 

    } 
}); 


private int getNewColor(int position, float offset) { 
    int next; 
    if (offset > 0) next = (position < NTABS) ? position+1 : position; 
    else next = (position > 0) ? position-1 : 0; 
    return blendColors(COLORS[next], COLORS[position], offset); 
} 

public int blendColors(int color1, int color2, float ratio) { 
    final float inverseRation = 1f - ratio; 
    float a = (Color.alpha(color1) * ratio) + (Color.alpha(color2) * inverseRation); 
    float r = (Color.red (color1) * ratio) + (Color.red (color2) * inverseRation); 
    float g = (Color.green(color1) * ratio) + (Color.green(color2) * inverseRation); 
    float b = (Color.blue (color1) * ratio) + (Color.blue (color2) * inverseRation); 
    return Color.argb((int) a, (int) r, (int) g, (int) b); 
} 
+0

謝謝你!你救了我的一天...... :-) – 2015-04-03 04:58:18

+0

不客氣! – nitrico 2015-04-03 09:01:26

0

打開您的PagerSlidingTabStrip庫類,你會得到代碼的這些線路像

private int indicatorColor = 0xFF666666; 
private int underlineColor = 0x1A000000; 

否則通過編程可以做那些顏色值,你會得到你想要的這個

tabs.setIndicatorColor(indicatorColor) 

變化。