Android开发-DrawerLayout实现侧滑菜单(1)

来源:互联网 发布:2015nba体测数据 编辑:程序博客网 时间:2024/06/06 12:42

       明年就要毕业了,现在面临的一个问题就是毕业设计。我的想法是要做一个练习英语四六级真题的app,针对听力,阅读等方面的内容,每日一练之类的内容,过多的想法就不在这里说了。这也许是我在大学期间想要做好的最后一件事情了,所以想把开发的过程以文字的形式记录下来,不只是分享一些技术方面的内容,更多的或许是在做得过程中的一些思考,一些问题,一些困难,因为个人的技术也就是菜鸟的水平,如果能得到大师的指点一二,就特别特别的开心啦~~~。现在也在实习,属于自己的时间不多,经常写一点,希望自己能坚持写下去。(ps:虽然我写的东西很多人都写过了,但是还是想记录一下自己学习的过程)

​       这是第二次接触android开发,上一次还是在大二的下学期,转眼间就已经大四了,哈哈哈,有太多的感慨,这里就不废话了,总之,如果你还是在校生,就珍惜在学校里的每一天吧。

       上周使用DrawerLayout做了一个侧滑菜单,大致的效果是这样的。(会不会觉得这个界面有点熟悉---没错的,我就是在模仿某个App做得界面)

填写图片摘要(选填)

​1:在打开和关闭侧滑菜单时有一个简单的滑动的动画效果。

2:是沉浸式状态栏现在好像还比较流行的样子,实现起来比较简单,但是要API19以上才可以支持

3:这个就是侧滑菜单啦,还有一个就是ListView使用的是自定义的Adapter这个部分明天再写。​

      今天主要就是记录一下3处的侧滑菜单,和1处的简单的动画效果。先简单的说一下实现步骤:

(1)首先当然是要写布局文件啦,可以看出大致主界面分为三部a.顶部红色的导航栏(是不是应该叫导航栏?)b.侧滑菜单。

c.自然是已经被侧滑菜单和阴影部分遮挡的主页面。下面贴出来部分的部分代码,细节部分我省略了,不然太长了,而且这不是我要记录的主要内容。

(1)布局文件的内容(总是被吞,可能是尖括号的原因吧,会被当成html代码处理?谁能告诉我怎么办???没办法,先用图片吧)

填写图片摘要(选填)

​​​​​

填写图片摘要(选填)
填写图片摘要(选填)


填写图片摘要(选填)

​.

(2)写完配置文件自然改写java代码了。下面把部分代码贴出来,没用的部分都去掉,需要注意的地方会在注释中写明。

public class HomeActivity extends Activity {

//整个侧滑界面要在下面实例化一个DrawLayout,好多操作都是在这个对象上进行的​

private DrawerLayout drawerLayout;

//左边整个侧滑部分​

private LinearLayout leftDrawer;

//侧滑部分的菜单部分​

private ListView leftMenu;

​//这是那三个横,下面要做他的滑动效果

private ImageView btnToggle;

private int movDistance = 8;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_home);

//实例化各个控件​

drawerLayout =(DrawerLayout) findViewById(R.id.drawer_layout);

leftDrawer = (LinearLayout) findViewById(R.id.left_drawer);

leftMenu =(ListView)findViewById(R.id.left_menu);

btnToggle =(ImageView)findViewById(R.id.btnToggle);

//下面这个就是将滑动的距离从dp转化为px哦

float scale =getResources().getDisplayMetrics().density;

movDistance =(int) (movDistance*scale); 

//这个就是重点了!!!!设置滑动界面的监听器!!!在这里可以实现好多效果哦,就看

//你的需求了​

drawerLayout.setDrawerListener(new DrawerListener() {

@Override

//抽屉菜单的状态改变时调用该方法,状态改变包括有关到开,由开到关的过程,我没有

//用到,只能这样放着了​

public void onDrawerStateChanged(int arg0) {

// TODO Auto-generated method stub

}

@Override

//这个是滑动的时候响应的方法,无论是将手放在侧边缘活动出来,还是通过点击按钮

//滑动都会出来的都会调用这个方法,三个横的滑动效果就是在这里。​

public void onDrawerSlide(View arg0, float arg1) {

// TODO Auto-generated method stub

//arg1是菜单出来的大小0~1----0是都没出来,1就是都出来喽

float scale = arg1/1;//我这个1除的有点多余,强迫症,没办法

btnToggle.setTranslationX(-movDistance*scale);//这个就是处理那三个横的滑动喽,菜单滑出来的时候三个横就滑进去,所以加了个负号;

}

@Override

public void onDrawerOpened(View arg0) {

// TODO Auto-generated method stub

//不加注释你也看的懂了,完全打开的时候让三个横完全缩进去​

btnToggle.setTranslationX(-movDistance);

}

@Override

public void onDrawerClosed(View arg0) {

// TODO Auto-generated method stub

//不加注释你也看的懂了,完全关闭的时候让三个横完全出来​

btnToggle.setTranslationX(0);

}

});

}

​//下面简单说一下,通过按钮打开和关闭侧滑菜单的代码如下,按钮的事件响应大家太基础了,不在赘述了 ps:我的按钮就是那三个横和旁边的文字。

if(drawerLayout.isDrawerOpen(leftDrawer)){

drawerLayout.closeDrawer(leftDrawer);

}else{

drawerLayout.openDrawer(leftDrawer);

}//一看就懂,不用我多说了吧

ps:今天的结束了,也不知道会不会有人看~~~​发布了才发现,xml布局文件好多被吞掉了,跑回来重新编辑,,,,哎。。。。

0 0
原创粉丝点击