DevStore首页 > DEV资源 > 源码下载 > 源码详情

【转】仿QQ5.2左右菜单效果

 
紫豪 | 2014-12-19 14:20    浏览量(5548)    评论(13)    收藏(18)
功能分类:特效 支持平台:Android 运行环境:Eclipse
开发语言:Java 开发工具:Eclipse 源码大小:3.02MB
下载源码 1469 人下载

源码简介

高仿QQ5.2左右菜单效果,源码源自http://blog.csdn.net/lmj623565791/article/details/41531475 鸿洋,个人加了注释在上面

源码截图

  • 效果图
  • 效果图
DevStore所有源码来自用户上传分享,版权问题及牵扯到商业纠纷均与DevStore无关。

源码片段

/**
 * 主界面
 * 
 * @author // 原文作者zhy,紫豪注
 * @by ttp://blog.csdn.net/lmj623565791/article/details/41531475
 * 
 */
public class MainActivity extends FragmentActivity {

	private DrawerLayout mDrawerLayout;// 控件对象

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);

		initView();
		initEvents();

	}

	/**
	 * 初始化视图
	 */
	private void initView() {
		mDrawerLayout = (DrawerLayout) findViewById(R.id.id_drawerLayout);
		mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED,
				Gravity.RIGHT);// 关闭右侧菜单的滑动出现效果
	}

	/**
	 * 初始化DrawerLayout事件监听
	 */
	private void initEvents() {
		// 设置监听
		mDrawerLayout.setDrawerListener(new DrawerListener() {

			@Override
			public void onDrawerStateChanged(int newState) {
			}

			@Override
			public void onDrawerSlide(View drawerView, float slideOffset) {
				View mContent = mDrawerLayout.getChildAt(0);
				View mMenu = drawerView;
				float scale = 1 - slideOffset;
				float rightScale = 0.8f + scale * 0.2f;

				if (drawerView.getTag().equals(
						getResources().getString(R.string.left_tag))) {// 展开左侧菜单
					float leftScale = 1 - 0.3f * scale;

					// 设置左侧菜单缩放效果
					ViewHelper.setScaleX(mMenu, leftScale);
					ViewHelper.setScaleY(mMenu, leftScale);
					ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * (1 - scale));

					// 设置中间View缩放效果
					ViewHelper.setTranslationX(mContent,
							mMenu.getMeasuredWidth() * (1 - scale));
					ViewHelper.setPivotX(mContent, 0);
					ViewHelper.setPivotY(mContent,
							mContent.getMeasuredHeight() / 2);
					mContent.invalidate();
					ViewHelper.setScaleX(mContent, rightScale);
					ViewHelper.setScaleY(mContent, rightScale);
				} else {// 展开右侧菜单
					// 设置中间View缩放效果
					ViewHelper.setTranslationX(mContent,
							-mMenu.getMeasuredWidth() * slideOffset);
					ViewHelper.setPivotX(mContent, mContent.getMeasuredWidth());
					ViewHelper.setPivotY(mContent,
							mContent.getMeasuredHeight() / 2);
					mContent.invalidate();
					ViewHelper.setScaleX(mContent, rightScale);
					ViewHelper.setScaleY(mContent, rightScale);
				}

			}

			// 菜单打开
			@Override
			public void onDrawerOpened(View drawerView) {
			}

			// 菜单关闭
			@Override
			public void onDrawerClosed(View drawerView) {
				mDrawerLayout.setDrawerLockMode(
						DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);
			}
		});
	}

	/**
	 * 打开右侧菜单
	 * 
	 * @param view
	 */
	public void OpenRightMenu(View view) {
		mDrawerLayout.openDrawer(Gravity.RIGHT);// 展开侧边的菜单
		mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED,
				Gravity.RIGHT);// 打开手势滑动
	}
}
  •   赞(1) 赞 +1 赞(1) 已赞
  •   收藏(18) 收藏 +1 已收藏 取消
  •   下载(1469)
评论(13)
ge1944633835

ge1944633835 2015-11-27 21:37:46

这个不错,实现的比较简单,易懂
回复(0) 赞(0) 赞(1)
sxh

sxh 2015-11-02 09:41:08

怎么实现左右都侧滑,右边也可以侧滑出侧拉菜单
回复(0) 赞(0) 赞(1)
merhong2012

merhong2012 2015-01-22 16:32:00

代码有些BUG,点击出右侧菜单后,再执行左侧菜单的侧滑手势,看看会有什么效果
回复(2) 赞(1) 赞(2)
 
  • Sunnymomo:
    回复@紫豪:刚刚看了一下,打开右边菜单的时候把左边菜单响应事件锁住就可以解决这个问题,分享一下代码 //点击图标,打开右边菜单 @SuppressLint("RtlHardcoded") public void OpenRightMenu(View view) { mDrawerLayout.openDrawer(Gravity.RIGHT); mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); }
    回复2015-07-27 22:33:07
  • 紫豪:
    回复@merhong2012:抽空会个人改进下。
    回复2015-04-09 16:27:03
前行者2012

前行者2012 2015-01-21 10:48:40

很好的左右侧拉效果,感谢楼主分享。
回复(0) 赞(0) 赞(1)
亚细亚

亚细亚 2015-01-04 15:40:35

只有图片上的第二个效果,没有第一个效果。。。。
回复(1) 赞(0) 赞(1)
 
  • 前行者2012:
    你点击右上角的管理就出来了第二个效果。
    回复2015-01-21 10:48:09
  • 推荐
  • 审核
  • 收录
  • 获取活力值

源码上传作者

  • 138 能力值
  • 58 源码
  • 10 评测
  • 0 资料

热门源码