码迷,mamicode.com
首页 > 其他好文 > 详细

SlidingMenu初识

时间:2016-04-26 21:17:02      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

SlidingMenu——方式1
1、初始化SlidingMenu对象
2、设置SlidingMenu的菜单模式。 只有左侧菜单,只有右侧菜单,或者双侧菜单
3、设置SlidingMenu显示的菜单布局
4、设置菜单的显示方式
5、设置滑动菜单的隐藏方式
6、设置菜单显示宽度
7、将菜单附加到当前Activity中进行显示

技术分享
 
注意,
1、寻找菜单中控件,一定要在布局加入后,才要findViewById,否则会出现空指针异常
2、如果菜单中有点击事件,则不可以将菜单的显示设为内容滑动(两者有冲突)

功能:
1、因为可以加入布局,所以菜单中可以随意定义显示的布局样式
2、可以设置菜单的显示,隐藏方式(边缘滑动,内容滑动,两者都不可以)
3、可以设置显示方式(只有左侧菜单,只有右侧菜单,两侧都有)
4、可以设置菜单显示的宽度
5、在添加到activity中,可以设置是否共享标题栏
6、可以控制菜单滚动时,先出现菜单哪部分
7、菜单滚动时,可以改变菜单的透明度变化

SlidingMenu——方式2
1. 将继承的Activity替换为框架中的SlidingFragmentActivity
2. 调用setBehindContentView设置菜单的显示
3. 初始化SlidingMenu对象
4. 设置SlidingMenu的菜单模式。 只有左侧菜单,只有右侧菜单,或者双侧菜单
5. 设置菜单的显示方式
6. 设置滑动菜单的隐藏方式
7. 设置菜单显示宽度
技术分享

注意:
1、寻找菜单中控件,一定要在sliding=getSlidingMenu()后,才要findViewById,否则会出现空指针异常

与1的不同:
1.因为没有attachToActivit方法,所以就不存在是否共享标题栏,其实activity本身没有标题栏
SlidingMenu——方式3
  • 1. 在方式一或者方式二的基础上先显示一个基础SlidingMenu
  • 2.在设置SlidingMenu菜单显示的布局中,将内容变为一个FrameLayout
  • 3.通过FragmentManageraddreplace方法将要作为菜单显示内容的Fragment替换第二步中FrameLayout中的内容即可
注意:
这样写对菜单内的控件的点击事件,只能写在fragMent中,并且更新UI还得通过回调接口


贴上部分代码
SlidingMenu1:
package com.wang.main;
 
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.DragEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
 
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    private SlidingMenu sliding;
    private ImageView iv;
    private LinearLayout layout1,layout2,layout3;
    private TextView bottom_tv1,bottom_tv2;
    private ScrollView scrollview;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //1.初始化slidingmenu对象
        sliding=new SlidingMenu(this);
 
        //2、设置slidingmenu的显示方式,left=只有左侧菜单,rigth=只有右侧菜单,LEFT_RIGHT=既能显示左侧,又能显示右侧
        sliding.setMode(SlidingMenu.LEFT);
 
        //3、设置slidingmenu的菜单布局
        sliding.setMenu(R.layout.slidingleft);
        initView();
        //4、设置菜单的显示方式
//        /*
//        *SlidingMenu.TOUCHMODE_FULLSCREEN  在屏幕的任意位置滑动即可打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_MARGIN   必须从边缘开始滑动才能打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_NONE   无论在什么位置滑动都不能打开侧滑菜单,必须通过点击按钮,手动调用打开菜单的方法
//          * */
        sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
 
        //5、设置滑动菜单的隐藏方式
        sliding.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);
 
        //6、设置菜单显示宽度,设为屏幕的1/3
        int i=getResources().getDisplayMetrics().widthPixels*2/3;
        sliding.setBehindWidth(i);
 
        //设置内容与菜单边缘的阴影效果
        sliding.setShadowDrawable(getResources().getDrawable(R.drawable.shape_sdshadowdraw));
        sliding.setShadowWidth(30);
 
        //设置菜单的透明度的改变,其中setFadeEnabled默认值为true
//        sliding.setFadeEnabled(false);
         sliding.setFadeDegree(1.0f);
 
        //0-1,其中0表示,拉动菜单滚动时先出现的是菜单的开头控件,1表示先出现末尾控件,默认0.5
        sliding.setBehindScrollScale(0.5f);
 
        //7、将菜单添加到当前activity中显示
//        /*
//         * SlidingMenu.SLIDING_WINDOW  以窗口方式将侧滑菜单加到当前Activity中
//         * SlidingMenu.SLIDING_CONTENT  以内容方式将侧滑菜单加到当前Activity中
//         * 两者的区别在于是否共享标题栏
//         * */
        sliding.attachToActivity(this,SlidingMenu.SLIDING_WINDOW);
 
        //本来是要联网读取数据,并将图片弄成圆形的,现在手动画一下
 
        GetRoundBitmap gp=new   GetRoundBitmap();
        Bitmap bp=gp.getRoundBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.naruto));
        Log.i("mtag","start"+bp);
        Log.i("mtag","start"+iv);
        iv.setImageBitmap(bp);

 
    }
 
 
    /**
 * 寻找控件
 *
 *@author WangShujie
 *created at 2016/4/23 18:59
 */
    private void initView() {
        iv= (ImageView)sliding.getMenu().findViewById(R.id.slidingleft_iv);
        layout1= (LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout1);
        layout2=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout2);
        layout3=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout3);
        bottom_tv1= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv1);
        bottom_tv2= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv2);
        scrollview= (ScrollView) sliding.getMenu().findViewById(R.id.slidingleft_lv);
 
        layout1.setOnClickListener(this);
        layout2.setOnClickListener(this);
        layout3.setOnClickListener(this);
        bottom_tv1.setOnClickListener(this);
        bottom_tv2.setOnClickListener(this);
 
    }
 
 
    /**
     *对控件进行监听
     *
     *@author WangShujie
     *created at 2016/4/23 19:31
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.slidingleft_layout1:
                Toast.makeText(MainActivity.this"你点击了我的好友", Toast.LENGTH_SHORT).show();
                break;
            case R.id.slidingleft_layout2:
                Toast.makeText(MainActivity.this"你点击了我的收藏", Toast.LENGTH_SHORT).show();
 
                break;
            case R.id.slidingleft_layout3:
                Toast.makeText(MainActivity.this"你点击了退出", Toast.LENGTH_SHORT).show();
 
                break;
 
            case R.id.sliding_botomtv1:
                Toast.makeText(MainActivity.this"你点击了设置1", Toast.LENGTH_SHORT).show();
 
                break;
            case R.id.sliding_botomtv2:
                Toast.makeText(MainActivity.this"你点击了设置2", Toast.LENGTH_SHORT).show();
 
                break;
        }
    }
 
}
SlidingMenu2:
package com.wang.main;
 
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
 
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.wang.main.GetRoundBitmap;
 
public class MainActivity extends SlidingFragmentActivity implements View.OnClickListener {
 
    private SlidingMenu sliding;
    private ImageView iv;
    private LinearLayout layout1,layout2,layout3;
    private TextView bottom_tv1,bottom_tv2;
    private ScrollView scrollview;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
 
        //设置页面显示内容,不包括菜单
        setContentView(R.layout.activity_main);
        //1、将继承的Activity替换为框架中的SlidingFragmentActivity
 
        //2、调用setBehindContentView设置菜单的显示
        setBehindContentView(R.layout.slidingleft);
 
 
        //3、获取SlidingFragmentActivity中自带的菜单对象
        sliding=getSlidingMenu();
        initView();
 
        //4、设置slidingmenu的显示方式,left=只有左侧菜单,rigth=只有右侧菜单,LEFT_RIGHT=既能显示左侧,又能显示右侧
        sliding.setMode(SlidingMenu.LEFT);
 
 
        //5、设置菜单的显示方式
//        /*
//        *SlidingMenu.TOUCHMODE_FULLSCREEN  在屏幕的任意位置滑动即可打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_MARGIN   必须从边缘开始滑动才能打开侧滑菜单
//        * SlidingMenu.TOUCHMODE_NONE   无论在什么位置滑动都不能打开侧滑菜单,必须通过点击按钮,手动调用打开菜单的方法
//          * */
        sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
 
        //6、设置滑动菜单的隐藏方式
        sliding.setTouchModeBehind(SlidingMenu.TOUCHMODE_MARGIN);
 
        //7、设置菜单显示宽度,设为屏幕的1/3
        int i=getResources().getDisplayMetrics().widthPixels*2/3;
        sliding.setBehindWidth(i);
 
        //设置内容与菜单边缘的阴影效果
        sliding.setShadowDrawable(getResources().getDrawable(R.drawable.shape_sdshadowdraw));
        sliding.setShadowWidth(30);
 
        //设置菜单的透明度的改变,其中setFadeEnabled默认值为true
//        sliding.setFadeEnabled(false);
        sliding.setFadeDegree(1.0f);
 
        //0-1,其中0表示,拉动菜单滚动时先出现的是菜单的开头控件,1表示先出现末尾控件,默认0.5
        sliding.setBehindScrollScale(0.5f);
 
 
 
 
        //本来是要联网读取数据,并将图片弄成圆形的,现在手动画一下
 
        GetRoundBitmap gp=new   GetRoundBitmap();
        Bitmap bp=gp.getRoundBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.naruto));
        Log.i("mtag","start"+bp);
        Log.i("mtag","start"+iv);
        iv.setImageBitmap(bp);
 
    }
 
 
    /**
     * 寻找控件
     *
     *@author WangShujie
     *created at 2016/4/23 18:59
     */
    private void initView() {
        iv= (ImageView)sliding.getMenu().findViewById(R.id.slidingleft_iv);
        layout1= (LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout1);
        layout2=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout2);
        layout3=(LinearLayout) sliding.getMenu().findViewById(R.id.slidingleft_layout3);
        bottom_tv1= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv1);
        bottom_tv2= (TextView) sliding.getMenu().findViewById(R.id.sliding_botomtv2);
        scrollview= (ScrollView) sliding.getMenu().findViewById(R.id.slidingleft_lv);
        Log.i("mtag","tianfuxiaoyan++iv===="+iv);
        Log.i("mtag","tianfuxiaoyan++layout1===="+layout1);
        Log.i("mtag","tianfuxiaoyan++bottom_tv1===="+bottom_tv1);
        layout1.setOnClickListener(this);
        layout2.setOnClickListener(this);
        layout3.setOnClickListener(this);
        bottom_tv1.setOnClickListener(this);
        bottom_tv2.setOnClickListener(this);
 
    }
 
 
    /**
     *对控件进行监听
     *
     *@author WangShujie
     *created at 2016/4/23 19:31
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.slidingleft_layout1:
                Toast.makeText(MainActivity.this"你点击了我的好友", Toast.LENGTH_SHORT).show();
                break;
            case R.id.slidingleft_layout2:
                Toast.makeText(MainActivity.this"你点击了我的收藏", Toast.LENGTH_SHORT).show();
 
                break;
            case R.id.slidingleft_layout3:
                Toast.makeText(MainActivity.this"你点击了退出", Toast.LENGTH_SHORT).show();
 
                break;
 
            case R.id.sliding_botomtv1:
                Toast.makeText(MainActivity.this"你点击了设置1", Toast.LENGTH_SHORT).show();
 
                break;
            case R.id.sliding_botomtv2:
                Toast.makeText(MainActivity.this"你点击了设置2", Toast.LENGTH_SHORT).show();
 
                break;
        }
    }
 
}
原码下载地址:
http://download.csdn.net/detail/tianfuxiaoyan/9501522

SlidingMenu初识

标签:

原文地址:http://blog.csdn.net/tianfuxiaoyan/article/details/51235837

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!