侧滑菜单——SlidingMenu

来源:互联网 发布:媒体矩阵 是什么意思 编辑:程序博客网 时间:2024/06/05 06:03

通过这篇文章您将学习到如下图中的UI效果(开发环境:AndroidStudio 2.2):

SlidingMenu

额额,这个动态图有点魔性
简单说一下效果就是使用 SlidingMenu 做了一个侧滑菜单
打开(关闭)的方式有两种,一种是向右(左)滑动打开(关闭),一种是点击按钮打开(关闭)


先,我们需要到 GitHub 下载 SlidingMenu 所用到的 library,下载地址
解压后我们会得到:
文件夹
这里我们只需要使用 library 文件夹

然后,我们需要将下载好的 library 导入到项目中
在导入时我们要注意按如下步骤操作:
File —> New —> Import Module —> 选择 library 文件夹 —> Finish
等待编译器编译完成,若出现错误提示,请参考 SlidingMenu导入问题
然后我们将library添加到项目中,注意按如下步骤操作:
按 Ctrl + Shift + Alt + S —> app —> Dependencies —> + —> Module dependency —> 选中library —> OK

然后,我们就可以开始编写代码了:
先理一下思路:
1. 创建SlidingMenu对象
2. 为SlidingMneu对象设置属性
3. 为SlidingMneu对象添加监听事件
4. 增加一个按钮为其添加打开(关闭)菜单的监听事件

首先,创建 SlidingMneu 对象,使用 new 来创建的

private SlidingMenu menu;menu = new SlidingMenu(MainActivity.this);//创建SlidingMenu对象

然后,为 Slidingmenu 添加各种属性,包括:侧滑栏的位置、触摸屏幕的模式、根据资源文件ID来设置滑动菜单的阴影效果、滑动菜单式图的宽度、渐入渐出效果的值、为滑动菜单设置布局

//设置侧滑栏的位置menu.setMode(SlidingMenu.LEFT);//设置触摸屏幕的模式       menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); menu.setShadowWidthRes(R.dimen.shadow_width);//根据资源文件ID来设置滑动菜单的阴影效果menu.setShadowDrawable(R.drawable.shadow);//设置滑动菜单式图的宽度menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//设置渐入渐出效果的值menu.setFadeDegree(0.35f);//把滑动菜单添加进所有的Activity中menu.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_CONTENT);//为滑动菜单设置布局menu.setMenu(R.layout.leftmenu);

leftmenu 布局就是菜单的布局,这里我们只添加了一个 TextView

然后,我们为SlidingMneu对象添加监听事件:

/*** 打开的监听事件*/menu.setOnOpenListener(new SlidingMenu.OnOpenListener() {     @Override     public void onOpen() {          mMenuBtn.setText("关闭");         mMenuBtn.setBackgroundColor(Color.YELLOW);         Toast.makeText(MainActivity.this, "打开了!", Toast.LENGTH_SHORT).show();     }});/***关闭的监听事件 */menu.setOnCloseListener(new SlidingMenu.OnCloseListener() {     @Override     public void onClose() {          mMenuBtn.setText("打开");          mMenuBtn.setBackgroundColor(Color.GREEN);          Toast.makeText(MainActivity.this, "关上了!", Toast.LENGTH_SHORT).show();     }});

然后我们再添加一个按钮,为按钮添加监听事件:

mMenuBtn.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {            menu.toggle();       }});

没错,只需要一个方法 toggle(),在菜单关闭时执行该方法菜单会打开,反之亦然。

好了,这样我们上文中的案例效果就实现了!赶紧运用到自己的项目去吧!
完整代码:

package win.yuanhongbao.slidingmenudemo;import android.graphics.Color;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;public class MainActivity extends AppCompatActivity {    private SlidingMenu menu;    private Button mMenuBtn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mMenuBtn = (Button) findViewById(R.id.btn_menu);        mMenuBtn.setText("打开");        mMenuBtn.setBackgroundColor(Color.GREEN);        //创建SlidingMenu对象        menu = new SlidingMenu(MainActivity.this);        //设置侧滑栏的位置        menu.setMode(SlidingMenu.LEFT);        //设置触摸屏幕的模式        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);        menu.setShadowWidthRes(R.dimen.shadow_width);        //根据资源文件ID来设置滑动菜单的阴影效果        menu.setShadowDrawable(R.drawable.shadow);        //设置滑动菜单式图的宽度        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);        //设置渐入渐出效果的值        menu.setFadeDegree(0.35f);        //把滑动菜单添加进所有的Activity中        menu.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_CONTENT);        //为滑动菜单设置布局        menu.setMenu(R.layout.leftmenu);        /**         *打开的监听事件         */        menu.setOnOpenListener(new SlidingMenu.OnOpenListener() {            @Override            public void onOpen() {                mMenuBtn.setText("关闭");                mMenuBtn.setBackgroundColor(Color.YELLOW);                Toast.makeText(MainActivity.this, "打开了!", Toast.LENGTH_SHORT).show();            }        });         /**         *关闭的监听事件         */        menu.setOnCloseListener(new SlidingMenu.OnCloseListener() {            @Override            public void onClose() {                mMenuBtn.setText("打开");                mMenuBtn.setBackgroundColor(Color.GREEN);                Toast.makeText(MainActivity.this, "关上了!", Toast.LENGTH_SHORT).show();            }        });        /**         *按钮的监听事件         */        mMenuBtn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                menu.toggle();            }        });    }}

源码下载地址

1 0
原创粉丝点击