public class MainSlidingMenuView extends FrameLayout {
private View menuView;
private View contentView;
private int mScreenWidth;
private Scroller mScroller;
public MainSlidingMenuView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public MainSlidingMenuView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MainSlidingMenuView(Context context) {
super(context);
init(context);
}
private void init(Context context) {
mScroller = new Scroller(getContext());
WindowManager windowManager = ((Activity) context).getWindow()
.getWindowManager();
Display display = windowManager.getDefaultDisplay();
mScreenWidth = display.getWidth();
Loger.e("mScreenWidth = "+mScreenWidth);
}
public void setMenuView(View view) {
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
addView(view, lp);
menuView = view;
}
public void setContentView(View view) {
LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
addView(view, lp);
contentView = view;
contentView.bringToFront();
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
postInvalidate();
}
@Override
public void computeScroll() {
if (mScroller.computeScrollOffset()) {
int oldX = contentView.getScrollX();
int oldY = contentView.getScrollY();
int x = mScroller.getCurrX();
int y = mScroller.getCurrY();
if (oldX != x || oldY != y) {
if (contentView != null) {
contentView.scrollTo(x, y);
}
}
invalidate();
}
}
private void smoothScrollTo(int dx) {
int duration = 500;
int oldScrollX = contentView.getScrollX();
mScroller.startScroll(oldScrollX, contentView.getScrollY(), dx,
contentView.getScrollY(), duration);
invalidate();
}
public boolean isContentViewShow() {
int scrollX = contentView.getScrollX();
Loger.e("scrollX = "+scrollX);
if (scrollX == 0) {
return true;
}
return false;
}
public boolean isInMenuView(){
int scrollX = contentView.getScrollX();
return -mScreenWidth==scrollX;
}
public boolean isScroling(){
int scrollX = contentView.getScrollX();
return scrollX!=0&&scrollX!=-mScreenWidth;
}
public final boolean showMenuAnimation = true;
public void showMenuView() {
Animation animation = null;
int oldScrollX = contentView.getScrollX();
if (oldScrollX == 0) {
// Log.e("zx","oldScrollX == 0");//fanhui
menuView.setVisibility(View.VISIBLE);
smoothScrollTo(-mScreenWidth);
animation = new TranslateAnimation(-200, 0, 0, 0);
} else if (oldScrollX == -mScreenWidth) {
smoothScrollTo(mScreenWidth);
animation = new TranslateAnimation(0, -200, 0, 0);
}
if(!showMenuAnimation) return;
animation.setDuration(500);
menuView.startAnimation(animation);
}
}