219 lines
5.8 KiB
Java
219 lines
5.8 KiB
Java
package net.simonvt.menudrawer;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.util.AttributeSet;
|
|
|
|
public class StaticDrawer extends MenuDrawer {
|
|
|
|
public StaticDrawer(Context context) {
|
|
super(context);
|
|
}
|
|
|
|
public StaticDrawer(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
}
|
|
|
|
public StaticDrawer(Context context, AttributeSet attrs, int defStyle) {
|
|
super(context, attrs, defStyle);
|
|
}
|
|
|
|
@Override
|
|
protected void initDrawer(Context context, AttributeSet attrs, int defStyle) {
|
|
super.initDrawer(context, attrs, defStyle);
|
|
super.addView(mMenuContainer, -1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
|
super.addView(mContentContainer, -1, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
|
|
|
mIsStatic = true;
|
|
}
|
|
|
|
@Override
|
|
protected void drawOverlay(Canvas canvas) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
protected void onOffsetPixelsChanged(int offsetPixels) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
|
final int width = r - l;
|
|
final int height = b - t;
|
|
|
|
switch (getPosition()) {
|
|
case LEFT:
|
|
mMenuContainer.layout(0, 0, mMenuSize, height);
|
|
mContentContainer.layout(mMenuSize, 0, width, height);
|
|
break;
|
|
|
|
case RIGHT:
|
|
mMenuContainer.layout(width - mMenuSize, 0, width, height);
|
|
mContentContainer.layout(0, 0, width - mMenuSize, height);
|
|
break;
|
|
|
|
case TOP:
|
|
mMenuContainer.layout(0, 0, width, mMenuSize);
|
|
mContentContainer.layout(0, mMenuSize, width, height);
|
|
break;
|
|
|
|
case BOTTOM:
|
|
mMenuContainer.layout(0, height - mMenuSize, width, height);
|
|
mContentContainer.layout(0, 0, width, height - mMenuSize);
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
|
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
|
|
final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
|
|
|
|
if (widthMode == MeasureSpec.UNSPECIFIED || heightMode == MeasureSpec.UNSPECIFIED) {
|
|
throw new IllegalStateException("Must measure with an exact size");
|
|
}
|
|
|
|
final int width = MeasureSpec.getSize(widthMeasureSpec);
|
|
final int height = MeasureSpec.getSize(heightMeasureSpec);
|
|
|
|
switch (getPosition()) {
|
|
case LEFT:
|
|
case RIGHT: {
|
|
final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
|
|
|
|
final int menuWidth = mMenuSize;
|
|
final int menuWidthMeasureSpec = MeasureSpec.makeMeasureSpec(menuWidth, MeasureSpec.EXACTLY);
|
|
|
|
final int contentWidth = width - menuWidth;
|
|
final int contentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(contentWidth, MeasureSpec.EXACTLY);
|
|
|
|
mContentContainer.measure(contentWidthMeasureSpec, childHeightMeasureSpec);
|
|
mMenuContainer.measure(menuWidthMeasureSpec, childHeightMeasureSpec);
|
|
break;
|
|
}
|
|
|
|
case TOP:
|
|
case BOTTOM: {
|
|
final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY);
|
|
|
|
final int menuHeight = mMenuSize;
|
|
final int menuHeightMeasureSpec = MeasureSpec.makeMeasureSpec(menuHeight, MeasureSpec.EXACTLY);
|
|
|
|
final int contentHeight = height - menuHeight;
|
|
final int contentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(contentHeight, MeasureSpec.EXACTLY);
|
|
|
|
mContentContainer.measure(childWidthMeasureSpec, contentHeightMeasureSpec);
|
|
mMenuContainer.measure(childWidthMeasureSpec, menuHeightMeasureSpec);
|
|
break;
|
|
}
|
|
}
|
|
|
|
setMeasuredDimension(width, height);
|
|
}
|
|
|
|
@Override
|
|
public void toggleMenu(boolean animate) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void openMenu(boolean animate) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void closeMenu(boolean animate) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public boolean isMenuVisible() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void setMenuSize(int size) {
|
|
mMenuSize = size;
|
|
requestLayout();
|
|
invalidate();
|
|
}
|
|
|
|
@Override
|
|
public void setOffsetMenuEnabled(boolean offsetMenu) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public boolean getOffsetMenuEnabled() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void peekDrawer() {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void peekDrawer(long delay) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void peekDrawer(long startDelay, long delay) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void setHardwareLayerEnabled(boolean enabled) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public int getTouchMode() {
|
|
return TOUCH_MODE_NONE;
|
|
}
|
|
|
|
@Override
|
|
public void setTouchMode(int mode) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void setTouchBezelSize(int size) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public int getTouchBezelSize() {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public void setSlideDrawable(int drawableRes) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void setSlideDrawable(Drawable drawable) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void setupUpIndicator(Activity activity) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public void setDrawerIndicatorEnabled(boolean enabled) {
|
|
// NO-OP
|
|
}
|
|
|
|
@Override
|
|
public boolean isDrawerIndicatorEnabled() {
|
|
return false;
|
|
}
|
|
}
|