通过这篇文章您将学习到如下图中的UI效果(开发环境:AndroidStudio 2.2):
额额,这个动态图有点魔性
简单说一下效果就是使用 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();
}
});
}
}