在ViewPagerIndicator的两侧创建模糊效果

时间:2012-08-09 02:45:06

标签: android

我意识到,对于Google Play市场,它们在左侧有“模糊”效果(请参阅左侧的“付费”和右侧的“趋势”,如附件中所示)

我想知道,使用ViewPagerIndicator是否可以达到这样的效果?从我看到的演示中,我们可以自定义各种指标(从线到三角形)。但我还没有看到一个例子,它会在左侧产生“模糊”效果。

enter image description here

1 个答案:

答案 0 :(得分: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);
    }

}