最开始要先把布局写出来,侧滑的控件可以使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) {
}
});
}
});
}
}