java 抽屉效果_侧滑-抽屉界面在主界面的左边或者右边,拉出来的效果

该博客介绍了如何在Java中创建一个抽屉效果,即从主界面的左侧或右侧拉出的侧滑界面。通过实例展示了如何使用DrawerLayout、ListView、Fragment等组件来实现这一功能,包括设置抽屉内容、监听抽屉滑动事件以及动态替换主视图的Fragment。
摘要由CSDN通过智能技术生成

public class MainActivity extendsActivity{privateDrawerLayout drawerLayout;privateFrameLayout content_frame;privateListView drawer_list;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

drawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);//抽屉与主视图的布局

content_frame = (FrameLayout) findViewById(R.id.content_frame);//主视图(帧布局)//为左边的抽屉侧滑视图添加数据

drawer_list=(ListView) findViewById(R.id.left_drawer);//抽屉视图(ListView)

final ArrayList list=new ArrayList();for(int i=1;i<5;i++){

list.add("侧滑抽屉 "+i);

}

ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1,list);

drawer_list.setAdapter(adapter);//为抽屉列表设置监听,使得点击不同的列表项能插入不同的Fragment视图

drawer_list.setOnItemClickListener(newAdapterView.OnItemClickListener() {

@Overridepublic void onItemClick(AdapterView>parent, View view,int position, longid) {//当点击ListView条目时,动态添加一个fragment到FrameLayout(主视图)当中

Fragment contentFragment=new ContentFragment();//创建一个自定义的Fragment对象

Bundle bundle=newBundle();

bundle.putString("text", list.get(position));//将点击的内容添加到bundle中

contentFragment.setArguments(bundle);//为Fragment设置参数,将数据传送过去//得到碎片视图管理者

FragmentManager fragmentManager =getFragmentManager();//开始执行操作的对象(开启事务)

FragmentTransaction transaction =fragmentManager.beginTransaction();//表示将contentFragment视图替换id为content_frame的视图

transaction.replace(R.id.content_frame, contentFragment).commit();//替换视图并提交//将抽屉视图隐藏

drawerLayout.closeDrawer(drawer_list);

}

});//监听抽屉侧滑的打开与关闭

final String title=(String) getTitle();//获取最开始的标题

drawerLayout.setDrawerListener(newDrawerLayout.DrawerListener() {

@Overridepublic void onDrawerStateChanged(intarg0) {

System.out.println("状态改变的时候调用");

}

@Overridepublic void onDrawerSlide(View arg0, floatarg1) {//System.out.println("滑动的时候调用");

}

@Overridepublic voidonDrawerOpened(View arg0) {

getActionBar().setTitle("请选择");

System.out.println("抽屉打开的时候调用");//重绘活动条的菜单项

invalidateOptionsMenu();//使当前菜单无效,会回调onCreateOptionsMenu方法

}

@Overridepublic voidonDrawerClosed(View arg0) {

getActionBar().setTitle(title);

System.out.println("抽屉关闭的时候调用");//当抽屉关闭的时候也要去回调onCreateOptionsMenu方法,才能修改菜单项的显示

invalidateOptionsMenu();//使当前菜单无效,会回调onCreateOptionsMenu方法

}

});

}

@Overridepublic booleanonCreateOptionsMenu(Menu menu) {

System.out.println("回调onCreateOptionsMenu方法后会自动调用onPrepareOptionsMenu方法");

getMenuInflater().inflate(R.menu.main, menu);//将菜单显示出来

return super.onCreateOptionsMenu(menu);

}

@Overridepublic booleanonPrepareOptionsMenu(Menu menu) {

System.out.println("onPrepareOptionsMenu方法被调用");//判断抽屉的ListView是否打开

boolean drawerOpen =drawerLayout.isDrawerOpen(drawer_list);//如果抽屉打开了就将活动条中的搜索菜单隐藏

if(drawerOpen){

menu.findItem(R.id.action_websearch).setVisible(false);//通过菜单id找到菜单项

}else{

menu.findItem(R.id.action_websearch).setVisible(true);

}return super.onPrepareOptionsMenu(menu);

}//菜单项的点击事件

@Overridepublic booleanonOptionsItemSelected(MenuItem item) {if(item.getItemId()==R.id.action_websearch){

System.out.println("点击了搜索菜单项");

}return super.onOptionsItemSelected(item);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值