您的位置:首页 > 其它

补充slidingmenu之左右侧滑

2016-06-17 15:08 197 查看

在这里我们既然学习了Slidingmenu侧滑,当然也可以将其做成双向的,比如:掌阅app~

在这里贴出布局:

activity_main:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>

</RelativeLayout>
右侧布局menu_frame_right.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/menu_right"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f00" >
</FrameLayout>

</LinearLayout>
左侧布局menu_frame.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#333333" >
</FrameLayout>

</LinearLayout>

MainActivity-----

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Window;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

public class MainActivity extends SlidingFragmentActivity {

private SlidingMenu slidingMenu;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 内容页布局
setContentView(R.layout.content);
// 设置侧拉条目布局
setBehindContentView(R.layout.menu_frame);
// 获取侧拉栏目对象
slidingMenu = getSlidingMenu();

/*
* SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效 SlidingMenu.TOUCHMODE_MARGIN
* 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE 不响应触摸事件
*/
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

// 设置内容显示页对应的dp大小
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// //设置左侧侧拉栏目宽度
// slidingMenu.setBehindWidth(140);
// 设置侧拉栏目所在位置
/*
* SlidingMenu.LEFT SlidingMenu.LEFT_RIGHT SlidingMenu.RIGHT
*/
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
// 给侧拉栏目和左侧内容页区分开(加线)
slidingMenu.setShadowDrawable(R.drawable.shadow);
// 设置线的宽度
slidingMenu.setShadowWidthRes(2);

// fragment去替换布局中节点
MenuFragment menuFragment = new MenuFragment();
// FragmentManager管理者
getSupportFragmentManager()
// 开启事物
.beginTransaction()
// 通过fragment去替换对应布局
.replace(R.id.menu, menuFragment, "MENU")
// 提交事物
.commit();

slidingMenu.setSecondaryMenu(R.layout.menu_frame_right);
// 设置右侧分割线的图片
slidingMenu.setSecondaryShadowDrawable(R.drawable.shadow);

RightMenuFragment rightMenuFragment = new RightMenuFragment();
// FragmentManager管理者
getSupportFragmentManager()
// 开启事物
.beginTransaction()
// 通过fragment去替换对应布局
.replace(R.id.menu_right, rightMenuFragment, "MENU_RIGHT")
// 提交事物
.commit();
}

// 当前类中做替换当前显示内容界面的操作
public void switchFragment(Fragment fragment) {
if (fragment != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, fragment, "HOME").commit();
slidingMenu.toggle();
}
}

}

MenuFragment.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class MenuFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.menu_frame, container, false);
return view;
}
}

RightMenuFragment.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class RightMenuFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.menu_frame_right, container,
false);
return view;
}
}

dimens.xml---

<resources>

<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="slidingmenu_offset">180dp</dimen>
<dimen name="list_padding">10dp</dimen>
<dimen name="shadow_width">5dp</dimen>

</resources>


shadow.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<gradient
android:endColor="#5A000000"
android:centerColor="#2D000000"
android:startColor="#00000000" />
</shape>


这样就可以完成了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: