par programme assombrir une Vue sur android

J'ai trouvé comment modifier l'opacité d'un Vue, mais j'ai besoin de foncer un View. Ma meilleure idée est de mettre un transparent rectangle noir au-dessus, puis augmenter lentement l'opacité du rectangle.

Connaissez-vous une meilleure façon de le faire?

public class Page07AnimationView extends ParentPageAnimationView {
    private final String TAG = this.getClass().getSimpleName();
    private ImageView overlay;
    private int mAlpha = 0;

    public Page07AnimationView(Context context) {
        super(context);
    }

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

    protected void init()
    {
        overlay = new ImageView(mContext);
        overlay.setImageResource(R.drawable.black_background);
        overlay.setAlpha(0);
        overlay.setWillNotDraw(false);
        //make the PageAniSurfaceView focusable so it can handle events
        setFocusable(true);
    }

    protected void draw_bitmaps(Canvas canvas)
    {
        overlay.draw(canvas);
        update_bitmaps();
        invalidate();
    }

    public void update_bitmaps()
    {
        if(mAlpha < 250)
        {
            mAlpha += 10;
            overlay.setAlpha(mAlpha);
        }
    }
}

Le code ci-dessus n'est pas de faire ce que j'avais espéré. Page07AnimationView est ajouté à un FrameLayout sur la vue j'ai besoin de foncer. R.drawable.black_background points pour un 787px x 492px noir image png.

J'ai ajouté overlay.setWillNotDraw(false); mais il n'a pas aidé.
J'ai changé le premier setAlpha(0) à setAlpha(255) mais cela n'a pas aidé.
J'ai enlevé le setAlpha() appels au total, mais il ne l'a pas aidé.

Cette technique de base de l'ajout d'un PageNNAnimationView a travaillé pour dessiner Bitmaps, mais de ne pas tirer de ImageView overlay. (Je voudrais utiliser Bitmaps, mais ils ne semblent pas avoir une composante alpha.)

Edit2: c'est le parent de la classe ci-dessus:

public class ParentPageAnimationView extends View {
    private final String TAG = this.getClass().getSimpleName();
    protected Context mContext;

    public ParentPageAnimationView(Context context) {
        super(context);
        mContext = context;
        init();
    }

    public ParentPageAnimationView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        init();
    }

    protected void init()
    {
    }

    protected void draw_bitmaps(Canvas canvas)
    {
        //will be overridden by child classes
    }

    @Override
    protected void onDraw(Canvas canvas) {
        if(this.getVisibility() == View.VISIBLE)
        {
            if(canvas != null)
            {
                draw_bitmaps(canvas);
            }
        }
    }

    public void update_bitmaps() 
    {
        //will be overridden by child classes
    }

    public void elementStarted(PageElement _pageElement) {
        //Nothing in parent class
    }

    public void elementFinished(PageElement mElement) {
        //Nothing in parent class
    }
}
J'ai confirmé que draw_bitmaps et update_bitmaps sont appelés à plusieurs reprises.

OriginalL'auteur Thunder Rabbit | 2011-07-05