Android——Slidingmenu互挤抽屉(QQ)应用

来源:互联网 发布:80端口 编辑:程序博客网 时间:2024/05/16 01:34

相比较之前DrawerLayout的抽屉效果,这个SlidingMenu显得更加的简单,效果也更

为好看,不会遮挡主内容区域。

Slidingmenu是单标签,不能添加其他控件,也就意味着不能作为Fragment的窝。。不

能与Fragment配合。

Slidingmenu是独立于Activity的,设置menu之后与Activity绑定即可。

需要导入第三方library,产生依赖,项目中属性中设置。

这个可以从gitHub中下载,只需要里面的library,在项目的properties设置

这里写图片描述

SlidingMenu下载

add加入导入到项目中的library,只需要这个。前提需要将library导入项目。

SlidingMenu的使用:

1、创建SlidingMenu对象。

SlidingMenu menu=new SlidingMenu(this);

2、设置menu的模式(左右抽屉)

menu.setMode(SlidingMenu.LEFT);

3、设置menu的作用区域

menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);全屏作用。

4、设置抽屉展开的大小

menu.setBehindWidth();

5、添加抽屉布局

menu.setMenu(v)

6、将menu附着在Activity上面。

menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

这里将选中content即可。

这里打开抽屉和关闭抽屉有两个方法:

menu.showContent();关闭抽屉。

menu.showMenu();打开抽屉。

来做一个项目,通过按钮或者左右拖动来打开抽屉,通过抽屉中的按钮来改变主内容区

域的颜色。

这里写图片描述

Activity的xml只有一个button,设置监听打开抽屉。

mainactivity:

package com.example.slidingtest;import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;import android.animation.ObjectAnimator;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.Display;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.RelativeLayout;public class MainActivity extends Activity implements OnCheckedChangeListener {    private SlidingMenu menu;    private int width;    private boolean flag;    private RadioGroup rg;    private RelativeLayout layout;    private ObjectAnimator animator;    private int colors[]={Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    //获取手机屏幕的大小        Display d = getWindowManager().getDefaultDisplay();        DisplayMetrics metrics = new DisplayMetrics();        d.getMetrics(metrics);        width = metrics.widthPixels;        setContentView(R.layout.activity_main);        layout=(RelativeLayout) findViewById(R.id.main_layout);        initMenu();    }    private void initMenu() {        // TODO Auto-generated method stub        menu = new SlidingMenu(this);        menu.setMode(SlidingMenu.LEFT);        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);        menu.setBehindWidth(width * 2 / 3);        View v = getLayoutInflater().inflate(R.layout.slidingmenu_left, null);        initViewsMenu(v);//初始化左侧抽屉中的控件        menu.setMenu(v);        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);    }    private void initViewsMenu(View v) {        // TODO Auto-generated method stub        rg = (RadioGroup) v.findViewById(R.id.left_rg);        rg.setOnCheckedChangeListener(this);    }    public void myclick(View v) {        if (flag) {            animator=ObjectAnimator.ofFloat(layout, "alpha", 0.5f,1f);            animator.start();            menu.showContent();        } else {            animator=ObjectAnimator.ofFloat(layout, "alpha", 1,0.5f);            animator.start();            menu.showMenu();        }        flag = !flag;    }    @Override    public void onCheckedChanged(RadioGroup group, int checkedId) {        // TODO Auto-generated method stub        int index=0;        switch (checkedId) {        case R.id.left_red:            index=0;            break;        case R.id.left_green:            index=1;            break;        case R.id.left_blue:            index=2;            break;        case R.id.left_yellow:            index=3;            break;        }        layout.setBackgroundColor(colors[index]);        animator=ObjectAnimator.ofFloat(layout, "alpha", 0.5f,1f);        animator.start();        menu.showContent();        flag=!flag;    }}

左侧抽屉的布局只有ReadioButton。

获取手机屏幕信息:

1、Display d = getWindowManager().getDefaultDisplay();

DisplayMetrics metrics = new DisplayMetrics();

2、d.getMetrics(metrics);

3、width = metrics.widthPixels;

0 0