Drawerlayout实现侧滑

最开始要先把布局写出来,侧滑的控件可以使listview,也可以使Fragment,都在V4这个包中的android.support.v4.widget.DrawerLayout布局中。在布局中写主要内容,和两个listview,用来显示左右的侧滑框。记得要在listview中加入android:layout_gravity这个属性,属性值可以为start,表示最左侧,为end为最右侧。


   
   

   
   

    
    
    

    
    
    

    
    
    

   
   



首先,初始化控件,然后把listvie绑定适配器,显示出来。可以在drawerlayouyt中进行监听菜单滑动状态的改变。

package com.bwie.drawerlayout;

import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView lv1;
    private ListView lv2;
    private DrawerLayout drawerLayout;
    private List
   
   
    
     list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //显示的侧滑菜单布局
        lv1 = (ListView) findViewById(R.id.menu_list);
        lv2 = (ListView) findViewById(R.id.menu_listright);
        //跟布局侧拉菜单
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
        //主界面添加fragment
        getSupportFragmentManager().beginTransaction().replace(R.id.mycontent,new MainFragment()).commit();
        list = Arrays.asList(new String[]{"好友动态", "我的话题", "收藏", "活动"});
        lv1.setAdapter(new MyAdapter());
        lv2.setAdapter(new MyAdapter());
        //监听菜单滑动状态的改变
        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                //正常滑出;slideoffset代表菜单滑出的比例,全部滑出为1,不滑出为0
                System.out.println("onDrawerSlide=="+slideOffset);
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                //解决点击事件穿透冲突
                drawerView.setClickable(true);
                System.out.println("onDrawerOpened");
                //菜单彻底打开(滑出)
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                System.out.println("onDrawerClosed");
                //全部滑出屏幕
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                System.out.println("onDrawerStateChanged");
            }
        });

        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView
    
     adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this,"ttttttt",Toast.LENGTH_SHORT).show();
                //点击菜单条目,关闭当前菜单;参数为菜单显示的view;
                drawerLayout.closeDrawer(lv1);
                drawerLayout.openDrawer(lv2);
            }
        });
    }

    class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view= View.inflate(MainActivity.this, R.layout.item, null);
            TextView tv = view.findViewById(R.id.my_text);
            tv.setText(list.get(i));
            return view;
        }
    }
}

   
   



以下是用用Fragment显示侧滑。


首先是Fragment布局


   
   

然后是把Fragment显示出来

    /**
     * 侧滑
     */
    private void setDrawerlayout() {
        getSupportFragmentManager().beginTransaction().replace(R.id.main_drawer_frag,new Drawer_Fragment()).commit();


        title.TitleIconListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!drawerLayout.isDrawerOpen(frameLayout)) {
                    drawerLayout.openDrawer(frameLayout);
                }
            }
        });
        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                drawerView.setClickable(true);
            }

            @Override
            public void onDrawerClosed(View drawerView) {

            }

            @Override
            public void onDrawerStateChanged(int newState) {

            }
        });



    }


Fragment中的具体显示内容

    
    

    
    
        
     
     

    
     
     

        
      
      

        
      
      

        
      
      



    
     
     

    
     
     

    
     
     
        
      
      
            
       
       
            
       
       

        
      
      

        
      
      
            
       
       
            
       
       

        
      
      

        
      
      
            
       
       
            
       
       

        
      
      


    
     
     

    
    


FragMent中的具体操作
package com.bwie.kuangjia.Fragment;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatDelegate;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;

import com.bwie.kuangjia.Adapter.DrawerAdapter;
import com.bwie.kuangjia.R;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * Created by 樊健翔 on 2017/9/5.
 */

public class Drawer_Fragment extends Fragment {

    ImageView btn;
    private View view;
    private ListView lv;
    private LinearLayout daynight;
    private Button btn_daynight;
    private ImageLoader loader;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.main_drawerlayout, null);
        initView();

        //QQ登录
        QQLogin();
        //夜间模式
        DayNight();

        List
    
    
     
      list = Arrays.asList(new String[]{"好友动态", "与我相关", "我的头条", "我的话题", "收藏", "活动", " 商城"});
        lv.setAdapter(new DrawerAdapter(getActivity(),list));
//        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//            @Override
//            public void onItemClick(AdapterView
     
      adapterView, View view, int i, long l) {
//                drawerLayout.closeDrawer(listView);
//            }
//        });
        return view;
    }

    private void DayNight() {
        btn_daynight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "点击了夜间模式", Toast.LENGTH_SHORT).show();
                int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
                if(mode == Configuration.UI_MODE_NIGHT_YES) {
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                } else if(mode == Configuration.UI_MODE_NIGHT_NO) {
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                } else {
                    // blah blah
                }

                getActivity().recreate();
            }
        });
    }

    /**
     * 初始化控件
     */
    private void initView() {
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(getActivity());
        loader = ImageLoader.getInstance();
        loader.init(configuration);
        lv = view.findViewById(R.id.main_lv);
        btn = view.findViewById(R.id.main_qqlogin);
        btn_daynight = view.findViewById(R.id.main_daynight);
        daynight = view.findViewById(R.id.main_ll_2);
    }

    private void QQLogin() {

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                UMShareAPI.get(getActivity()).getPlatformInfo(getActivity(), SHARE_MEDIA.QQ, new UMAuthListener() {
                    @Override
                    public void onStart(SHARE_MEDIA share_media) {

                    }

                    @Override
                    public void onComplete(SHARE_MEDIA share_media, int i, Map
     
     
      
       map) {
                        loader.displayImage(map.get("iconurl"), btn);
                        System.out.println("eeee====" + map.get("iconurl"));

                    }

                    @Override
                    public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

                    }

                    @Override
                    public void onCancel(SHARE_MEDIA share_media, int i) {

                    }
                });
            }
        });
    }
}

     
     
    
    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值