drawerlayout 动画效果 取消主界面透明度变化

最近在做项目过程中,涉及到对抽屉的应用,可使用slidingmenu,作用于drawerlayout相似,但是找了挺多好像没怎么看到对缩放和偏移的动画效果,于是用了google的drawerlayout.同时在项目中引入jar包nineoldandroids-2.4.0.jar  下载地址 http://dl.dbank.com/c04t71hcap 

使用方法:

1、其中drawerlayout有setDrawerLockMode();可以设置是否支持手势滑动,其中

      setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);//关闭手势滑动,有时候跟主界面滑动事件存在冲突时,可以将手势滑动关闭

      mDrawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); //打开手势滑动

2、重写DrawerListener ,在onDrawerSlide方法中定义需要加载的动画效果,声明:在抽屉划出过程中会多次调用ondrawerslide方法,我在项目中用到的是nineoldandroids-2.4.0.jar架包,这是一个支持低版本动画效果的jar包,使用时直接导入到libs文件夹中即可。其中的ViewHelper可设置对应控件的

动画效果,代码如下:

private void initDrawerLayout()
	{
		mDrawerLayout = (DrawerLayout)findViewById(R.id.id_drawerLayout);
		mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);
		mDrawerLayout.setScrimColor(0x00ffffff);
		
		//新建drawerlistener
		DrawerListener listener = new DrawerListener()
		{
			@Override
			public void onDrawerStateChanged(int newState)
			{}

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

				if (drawerView.getTag().equals("RIGHT"))
				{
					ViewHelper.setTranslationX(mContent,-mMenu.getMeasuredWidth() * slideOffset);
//					ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * (1 - scale));
					
					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)
			{
//				ViewHelper.setTranslationX(mDrawerLayout.getChildAt(0),0);
				mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);
			}
		};
		
		mDrawerLayout.setDrawerListener(listener);
	}


3、在layout文件中使用drawerlayout,如果需要在左右两边都侧滑,那就定义两个fragment对应左右拉出菜单。同时定义左右菜单的宽度


   
   

   
   
    

    
    

    
     
     
    
     
     

    
     
     

        
      
      

        
      
      

        
      
      

        
      
      

        
      
      
    
     
     


    
    
   
    
    


   
   

最后提一下,由于在项目中使用drawerlayout的时候主界面在抽屉拉出后会有一个变暗的效果,如果想取消这种效果,可以添加mDrawerLayout.setScrimColor(0x00ffffff);这一句,将整个屏幕保持高亮。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值