package org.holoeverywhere.slidingmenu; import org.holoeverywhere.slidingmenu.SlidingMenu.CanvasTransformer; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; public class CustomViewBehind extends CustomViewAbove { // private static final String TAG = "CustomViewBehind"; private boolean mChildrenEnabled; private CanvasTransformer mTransformer; private CustomViewAbove mViewAbove; public CustomViewBehind(Context context) { this(context, null); } public CustomViewBehind(Context context, AttributeSet attrs) { super(context, attrs, false); } @Override protected void dispatchDraw(Canvas canvas) { if (mTransformer != null) { canvas.save(); mTransformer.transformCanvas(canvas, mViewAbove.getPercentOpen()); super.dispatchDraw(canvas); canvas.restore(); } else { super.dispatchDraw(canvas); } } @Override public int getBehindWidth() { ViewGroup.LayoutParams params = getLayoutParams(); return params.width; } @Override public int getChildLeft(int i) { return 0; } @Override public int getChildWidth(int i) { if (i <= 0) { return getBehindWidth(); } else { return getChildAt(i).getMeasuredWidth(); } } @Override public int getCustomWidth() { int i = isMenuOpen() ? 0 : 1; return getChildWidth(i); } @Override public boolean onInterceptTouchEvent(MotionEvent e) { return !mChildrenEnabled; } @Override public boolean onTouchEvent(MotionEvent e) { return false; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); if (mTransformer != null) { invalidate(); } } public void setCanvasTransformer(CanvasTransformer t) { mTransformer = t; } public void setChildrenEnabled(boolean enabled) { mChildrenEnabled = enabled; } @Override public void setContent(View v) { super.setMenu(v); } public void setCustomViewAbove(CustomViewAbove customViewAbove) { mViewAbove = customViewAbove; mViewAbove.setTouchModeBehind(mTouchMode); } @Override public void setTouchMode(int i) { mTouchMode = i; if (mViewAbove != null) { mViewAbove.setTouchModeBehind(i); } } }