SlidingMenu icon indicating copy to clipboard operation
SlidingMenu copied to clipboard

can i scale contentview when menu opened?

Open gbstark opened this issue 11 years ago • 3 comments

i want to scale my contentview when left/right menu opened.

but i can't add scaling function because slidemenu use scroller.

when i google it, i know scroller doesn't support scale option.

how can i scale contentview?

gbstark avatar Apr 21 '14 06:04 gbstark

Did you find a solution for this?

ghost avatar Aug 20 '14 06:08 ghost

I'd also be interested in a solution

mpociot avatar Jan 02 '15 21:01 mpociot

of course you can. add this when you want use the Scale

SlidingMenu.CanvasTransformer aboveTransformer = new SlidingMenu.CanvasTransformer() {
    @Override
    public void transformCanvas(Canvas canvas, float percentOpen) {
    float scale = (float) (percentOpen * 0.25 + 0.75);
    canvas.scale(scale, scale, 0, canvas.getHeight() / 2);
    }
};
mSlideMenu.setAboveCanvasTransformer(aboveTransformer);

add this in SlidingMenu

/**
 * Sets the above canvas transformer.
 *
 * @param t the new above canvas transformer
 */
public void setAboveCanvasTransformer(CanvasTransformer t) {
    mViewAbove.setCanvasTransformer(t);
}

add this in CustomViewAbove

public SlidingMenu.CanvasTransformer getTransformer() {
    return mTransformer;
}

public void setCanvasTransformer(SlidingMenu.CanvasTransformer mTransformer) {
    this.mTransformer = mTransformer;
}

private SlidingMenu.CanvasTransformer mTransformer;

@Override
protected void dispatchDraw(Canvas canvas) {
if (mTransformer != null) {
    canvas.save();
    mTransformer.transformCanvas(canvas, 1-getPercentOpen());
    super.dispatchDraw(canvas);
    canvas.restore();
} else
    super.dispatchDraw(canvas);
// Draw the margin drawable if needed.
mViewBehind.drawShadow(mContent, canvas);
mViewBehind.drawFade(mContent, canvas, getPercentOpen());
mViewBehind.drawSelector(mContent, canvas, getPercentOpen());
}

ares89 avatar Aug 26 '15 02:08 ares89