<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) {
}
});