android SlidingMenu相关介绍

来源:互联网 发布:化学化工物性数据手册 编辑:程序博客网 时间:2024/04/29 22:06

参考:http://blog.csdn.net/caiwenfeng_for_23/article/details/23384775

SlidingMenu 常用属性:
menu.setMode(SlidingMenu.LEFT);//设置左滑菜单
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕范围,该设置为全屏区域都可以滑动
menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片
menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度
menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
menu.setMenu(R.layout.menu_layout);//设置menu的布局文件
menu.toggle();//动态判断自动关闭或开启SlidingMenu
menu.showMenu();//显示SlidingMenu
menu.showContent();//显示内容
menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开
关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件

左右都可以划出SlidingMenu菜单只需要设置
menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片

设置SlidingMenu属性
sm = getSlidingMenu();
//如果只显示左侧菜单就是用LEFT,右侧就RIGHT,左右都支持就LEFT_RIGHT
sm.setMode(SlidingMenu.LEFT_RIGHT);//设置菜单滑动模式,菜单是出现在左侧还是右侧,还是左右两侧都有
sm.setShadowDrawable(R.drawable.shadow);//设置阴影的图片资源
sm.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
//sm.setBehindWidth(200);//设置菜单的宽
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的区域

支持右侧划出菜单:
//SlidingMenu可以同时支持划出左右两侧的菜单,互不冲突,而且动画优美,体验良好。
sm.setSecondaryMenu(R.layout.menu_frame2);//设置右侧菜单
sm.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单阴影的图片资源
//右侧SlidingMenu的Fragment
getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();

slidingMenu = getSlidingMenu();
//设置是左滑还是右滑,还是左右都可以滑
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
//设置阴影宽度
slidingMenu.setShadowWidth(getWindowManager().getDefaultDisplay().getWidth() / 40);
//设置左菜单阴影图片
slidingMenu.setShadowDrawable(R.drawable.shadow);
//设置右菜单阴影图片
slidingMenu.setSecondaryShadowDrawable(R.drawable.right_shadow);
//设置菜单占屏幕的比例
slidingMenu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
//设置滑动时菜单的是否淡入淡出
slidingMenu.setFadeEnabled(true);
//设置淡入淡出的比例
slidingMenu.setFadeDegree(0.4f);
//设置滑动时拖拽效果
slidingMenu.setBehindScrollScale(0);
//设置要使菜单滑动,触碰屏幕的范围
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

实例参考:slidngmenu+fragment

import java.util.ArrayList;
import java.util.List;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import com.slidingmenu.lib.SlidingMenu;

public class MainFragment extends FragmentActivity{

    private Button bt_sildmenu;
    private SlidingMenu mSlidingMenu ;
    private MyAdapter mAdapter;
    private List<String> list=new ArrayList<String>();
    
    private Fragment1 fragment1;
    private Fragment2 fragment2;
    private Fragment3 fragment3;
    /** fragment 管理器 */
    private FragmentManager fragmentManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mSlidingMenu = new SlidingMenu(MainFragment.this);
        for(int i=0;i<10;i++){
            list.add("sildmenu"+i);
        }
        mAdapter=new MyAdapter(list);
        ListView list=new ListView(this);
        list.setAdapter(mAdapter);
 
        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                          setTabSelect(position);
                mSlidingMenu.toggle();
            }
            
        });
        fragmentManager = getSupportFragmentManager();
        setTabSelect(0);
        bt_sildmenu=(Button) findViewById(R.id.bt);
        bt_sildmenu.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                mSlidingMenu.toggle();
            }
        });
        //设置侧滑方向
        mSlidingMenu.setMode(SlidingMenu.LEFT);
        //设置全屏有效果 // 设置触摸屏幕的模式
        mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        //设置偏移量  // 设置滑动菜单视图的宽度
        mSlidingMenu.setBehindOffsetRes(R.dimen.sliding_menu_offse);
        //设置透明度
        mSlidingMenu.setFadeDegree(0.35f);
        // 设置阴影宽度
        mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
        //设置阴影样式
        mSlidingMenu.setShadowDrawable(R.drawable.shadow);
        //设置依在Activity之上
        mSlidingMenu.attachToActivity(MainFragment.this, SlidingMenu.SLIDING_CONTENT);
        //设置布局资源
        mSlidingMenu.setMenu(list);
        
//        mSlidingMenu.setBehindWidth(250);
    }
    
    @SuppressLint("CommitTransaction") private void setTabSelect(int index){
        // 开启事务
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            hideFragments(transaction);
        switch (index) {
        case 0:
            if(fragment1==null){
                fragment1=new Fragment1();
                transaction.add(R.id.content, fragment1);
            }else{
                transaction.show(fragment1);
            }
            break;
        case 1:
            if(fragment2==null){
                fragment2=new Fragment2();
                transaction.add(R.id.content, fragment2);
            }else{
                transaction.show(fragment2);
            }
            break;
        case 2:
            if(fragment3==null){
                fragment3=new Fragment3();
                transaction.add(R.id.content, fragment3);
            }else{
                transaction.show(fragment3);
            }
            break;
        default:
            break;
        }
        transaction.commit();
    }
    private void hideFragments(FragmentTransaction transaction){
        if(fragment1!=null){
            transaction.hide(fragment1);
        }
        if(fragment2!=null){
            transaction.hide(fragment2);
        }
        if(fragment3!=null){
            transaction.hide(fragment3);
        }
    }

    
    private class MyAdapter extends BaseAdapter{
        private List<String> list=new ArrayList<String>();
        public MyAdapter(List<String> list) {
            this.list=list;
        }
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder mHolder=null;
            if(convertView==null){
                convertView=LayoutInflater.from(MainFragment.this).inflate(R.layout.list_item, null);
                mHolder=new ViewHolder();
                mHolder.tv=(TextView) convertView.findViewById(R.id.tv);
                convertView.setTag(mHolder);
            }
            mHolder=(ViewHolder) convertView.getTag();
            mHolder.tv.setText(list.get(position));
            return convertView;
        }
        
    }
    private class ViewHolder{
        private TextView tv;
    }




0 0
原创粉丝点击