2012-08-09 4 views
1

Google Play 시장에서는 왼쪽에 '흐리게 표시'효과가 있고 (첨부 파일의 경우 오른쪽에 '유료'및 오른쪽에 '추세'참조)ViewPagerIndicator의 양쪽에 흐리게 효과 만들기

궁금한데, ViewPagerIndicator 같은 효과를 얻을 수 있습니까? 내가 본 데모 에서처럼 다양한 지표 (선에서 삼각형)를 사용자 정의 할 수 있습니다. 그러나 나는 왼쪽에 "흐리게"효과를 만드는 예를 보지 못했습니다.

enter image description here

답변

4

궁금 그것은 ViewPagerIndicator를 사용하여 이러한 효과를 달성하는 것이 가능하다?

당신은 TitlePagerIndicator 클래스를 확장하고 단순히 페이딩 자신을 가장자리 그릴 수 :

public class TitlePageIndicatorFade extends TitlePageIndicator { 

    private GradientDrawable mDrawableLeft, mDrawableRight; 
    private static final int FADE_SIZE = 30; 

    public TitlePageIndicatorFade(Context context, AttributeSet attrs, 
      int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    public TitlePageIndicatorFade(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public TitlePageIndicatorFade(Context context) { 
     super(context); 
     init(); 
    } 

    private void init() { 
     mDrawableLeft = new GradientDrawable(
       GradientDrawable.Orientation.LEFT_RIGHT, new int[] { 
         Color.parseColor("#F9F9F9"), 
         Color.parseColor("#00000000") }); 
     mDrawableRight = new GradientDrawable(
       GradientDrawable.Orientation.RIGHT_LEFT, new int[] { 
         Color.parseColor("#F9F9F9"), 
         Color.parseColor("#00000000") }); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     mDrawableLeft.setBounds(0, 0, FADE_SIZE, getHeight()); 
     mDrawableRight.setBounds(getWidth()- FADE_SIZE, 0, getWidth(), 
       getHeight()); 
     mDrawableLeft.draw(canvas); 
     mDrawableRight.draw(canvas); 
    } 

}