设为首页 加入收藏

TOP

Android自定义侧滑菜单slidmenu(二)
2015-02-25 16:14:22 来源: 作者: 【 】 浏览:92
Tags:Android 定义 菜单 slidmenu
VelocityTracker.obtain();
? ?mVelocityTracker.addMovement(event);
? }


? switch (action) {
? case MotionEvent.ACTION_DOWN:
? ?if (!mScroller.isFinished()) {
? ? mScroller.abortAnimation();
? ?}
? ?mLastMotionX = x;
? ?mLastMotionY = y;
? ?System.out.println("mSlidView-scrollX-->" + mSlidView.getScrollX());
? ?System.out.println("mMenuView-Width-->" + getMenuViewWidth());
? ?if (mSlidView.getScrollX() == -getMenuViewWidth()
? ? ?&& mLastMotionX < getMenuViewWidth()) {
? ? // return false;
? ?}


? ?break;
? case MotionEvent.ACTION_MOVE:
? ?if (mIsBeingDragged) {
? ? float delateX = mLastMotionX - x;
? ? mLastMotionX = x;
? ? if (!(mSlidView.getScrollX() < 0)) {
? ? ?if (delateX > 0) {
? ? ? break;
? ? ?}
? ? }


? ? if ((mSlidView.getScrollX() <= 0)
? ? ? && (mSlidView.getScrollX() >= -(ConstantQuantity.screenWidth - ConstantQuantity.screenDensity * 50))) {
? ? ?mSlidView.scrollBy((int) delateX, 0);
? ? }


? ? System.out.println("delateX--->" + delateX);
? ? System.out.println("mSlidView.ScrollX--->"
? ? ? + mSlidView.getScrollX());
? ?}


? ?if (mSlidView.getScrollX() >= 0) {
? ? return false;
? ?}


? ?if (mSlidView != null) {
? ? bgShade.scrollTo(mSlidView.getScrollX() + 10, 0);
? ?}
? ?break;
? case MotionEvent.ACTION_CANCEL:
? case MotionEvent.ACTION_UP:
? ?int velocityX = 0;
? ?if (mVelocityTracker != null) {
? ? mVelocityTracker.addMovement(event);
? ? mVelocityTracker.computeCurrentVelocity(1000);
? ? velocityX = (int) mVelocityTracker.getXVelocity();
? ?}
? ?//当离开屏幕时根据滑动的速度来判断菜单是否打开或关闭
? ?showVelocityMenuView(velocityX);
? ?if (mVelocityTracker != null) {
? ? mVelocityTracker.recycle();
? ? mVelocityTracker = null;
? ?}
? ?break;
? }


? return true;
?}


?/**
? * @param view
? * 设置侧边菜单布局
? */
?public void setMenuView(View view) {
? LayoutParams behindParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
? ? LayoutParams.MATCH_PARENT);
? addView(view, behindParams);
? mMenuView = view;


?}


?/**
? * @param view
? * 设置中间滑动布局 设置中间滑动布局的同时,增加一个背景布局,用来显示侧边阴影!增加层级立体效果
? */
?public void setSlidView(View view) {
? LayoutParams bgShadeParams = new LayoutParams(
? ? ConstantQuantity.screenWidth, ConstantQuantity.screenHeight);
? bgShadeParams.addRule(RelativeLayout.CENTER_IN_PARENT);
? bgShade.setLayoutParams(bgShadeParams);


? LayoutParams bgParams = new LayoutParams(ConstantQuantity.screenWidth,
? ? ConstantQuantity.screenHeight - 48);
? bgParams.addRule(RelativeLayout.CENTER_IN_PARENT);


? View bgShadeContent = new View(mContext);


? bgShadeContent.setBackgroundResource(R.drawable.view_left_bg);


? bgShade.removeAllViews();
? bgShade.addView(bgShadeContent, bgParams);
? if (getChildCount() > 1) {
? ?removeViewAt(1);
? ?removeViewAt(1);
? }


? addView(bgShade, bgParams);


? LayoutParams aboveParams = new LayoutParams(LayoutParams.MATCH_PARENT,
? ? LayoutParams.MATCH_PARENT);
? addView(view, aboveParams);
? mSlidView = view;
? mSlidView.bringToFront();
? System.out.println(getChildCount());
?}


?/**
? * @return 获得菜单的宽度
? */
?private int getMenuViewWidth() {
? if (mMenuView == null) {
? ?return 0;
? }
? return mMenuView.getWidth();
?}


?
?/**
? * @param velocity
? * 判断菜单的打开或关闭
? */
?private void showVelocityMenuView(int velocity) {
? if (velocity > 0) {
? ?if (velocity > SNAP_VELOCITY) {
? ? smoothScrollTo(-(menuWidth + mSlidView.getScrollX()));
? ? setMenuState();
? ?} else {
? ? if (mSlidView.getScrollX() > -ConstantQuantity.screenWidth / 2) {
? ? ?smoothScrollTo(-mSlidView.getScrollX());
? ? } else {
? ? ?smoothScrollTo(-(menuWid

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android判断设备网络连接状态,并.. 下一篇Android 自定义控件打造史上最简..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: