DrawerLayout 抽屉效果 侧滑

本文介绍如何在Android应用中实现抽屉布局效果,包括布局文件配置及代码实现过程。通过XML定义主页面与抽屉页面,并展示如何使用DrawerLayout API进行交互控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

	<!-- 第一个布局是主页面 -->
	<RelativeLayout 
	    android:id="@+id/layout_Main"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent" >
	
	    <TextView
	        android:id="@+id/tvMain"
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:layout_centerHorizontal="true"
	        android:gravity="center"
	        android:text="主页面" 
	        android:textSize="20sp"/>
	    
	</RelativeLayout>
	
	<!-- 第二个布局是抽屉效果显示的界面 -->
	
	<RelativeLayout
	    android:id="@+id/layout_Drawer"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    android:layout_gravity="start">
	    
	    <TextView 
	        android:id="@+id/tvDrawer"
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:layout_centerHorizontal="true"
	        android:gravity="center"
	        android:text="抽屉效果页面" 
	        android:textSize="20sp"/>
	</RelativeLayout>

</android.support.v4.widget.DrawerLayout>

在程序中:

public class MainActivity extends Activity {

	private DrawerLayout drawerLayout;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);

		drawerLayout.openDrawer(Gravity.LEFT);
	}
}
说明:

布局文件中使用android:layout_gravity="start"来显示抽屉效果现实的方向,start/left表示左滑显现,end/right表示右滑显示,布局文件中的方向要与代码中的drawerLayout.openDrawer(Gravity.LEFT);的LEFT(对应于布局中start/left)和RIGHT(对应布局中end/right)相对应。
某些时候主页面中使用ViewPager,需要锁定滑动显示抽屉,在代码中设置drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);


附:一些侧滑效果jar包和部分代码

jar包地址:http://download.youkuaiyun.com/download/gqqzxc/9331007(非原创)

代码:

drawerLayout.setDrawerListener(new DrawerListener() {

			@Override
			public void onDrawerStateChanged(int arg0) {

			}

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

				if (drawerView.getTag().equals("LEFT")) {

					float leftScale = 1 - 0.3f * scale;

					ViewHelper.setScaleX(mMenu, leftScale);
					ViewHelper.setScaleY(mMenu, leftScale);
					ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * (1 - scale));
					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);
				}
			}

			@Override
			public void onDrawerOpened(View arg0) {

			}

			@Override
			public void onDrawerClosed(View arg0) {

			}
		});



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值