Android开源项目SlidingMenu的学习笔记(二)
在前面已经介绍了SlidingMenu的用法:Android开源项目SlidingMenu的学习笔记(一),接下来再深入学习下,根据滑出项的Menu切换到对应的页面目录结构:点击Bluetooth可以切换到相应的界面关键代码MainActivity.javapackage com.dzt.slidingmenudemo;import an
·
在前面已经介绍了SlidingMenu的用法:Android开源项目SlidingMenu的学习笔记(一),接下来再深入学习下,根据滑出项的Menu切换到对应的页面
目录结构:
点击Bluetooth可以切换到相应的界面
关键代码
MainActivity.java
package com.dzt.slidingmenudemo;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.util.Log;
import com.dzt.slidingmenudemo.fragment.BluetoothFragment;
import com.dzt.slidingmenudemo.fragment.DisplayFragment;
import com.dzt.slidingmenudemo.fragment.HomeFragment;
import com.dzt.slidingmenudemo.fragment.MenuFragment;
import com.dzt.slidingmenudemo.fragment.WifiFragment;
import com.dzt.slidingmenudemo.fragment.MenuFragment.OnMenuListOnItemClickListener;
import com.slidingmenu.lib.SlidingMenu;
import com.slidingmenu.lib.app.SlidingActivity;
/**
* 根据不同的Menu切换到相应的Fragment
*
* @author Administrator
*
*/
public class MainActivity extends SlidingActivity implements
OnMenuListOnItemClickListener {
private SlidingMenu mChannelMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 设置标题栏的标题
setTitle("测试SlidingMenu");
setContentView(R.layout.content_frame);
initChannelMenu();
}
private void initChannelMenu() {
setBehindContentView(R.layout.menu_frame);
// 创建SlidingMenu对象
mChannelMenu = getSlidingMenu();
// 设置侧滑栏菜单位置,这里在左边。拉动菜单时,会从左边弹出
mChannelMenu.setMode(SlidingMenu.LEFT);
// 设置触摸的范围,这里设置全屏
mChannelMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 设置阴影的宽度,查看上面第二张效果图,靠右边的位置,有一个阴影过渡。就是这个东西
mChannelMenu.setShadowWidthRes(R.dimen.shadow_width);
// 这里是阴影效果,可以设置图片或者一个颜色过渡
mChannelMenu.setShadowDrawable(R.drawable.shadow);
// 设置后面间距,侧滑栏和原来界面间距
mChannelMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 边框的角度,这里指边界地方
mChannelMenu.setFadeDegree(0.35f);
// 设置触摸屏幕的模式
mChannelMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 设置SlidingMenu的内容
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
MenuFragment menuFragment = new MenuFragment();
menuFragment.setOnMenuListOnItemClickListener(this);
fragmentTransaction.replace(R.id.menu_frame, menuFragment);
fragmentTransaction.replace(R.id.content_frame, new HomeFragment());
fragmentTransaction.commit();
}
@Override
public void onBackPressed() {
if (mChannelMenu.isMenuShowing()) {
// 隐藏SlidingMenu,这里的Content就是我们的主Activity
mChannelMenu.showContent();
} else {
super.onBackPressed();
}
}
@Override
public void onSelectItem(int position, String title) {
// TODO Auto-generated method stub
System.out.println("onSelectItem title = " + title);
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new WifiFragment();
break;
case 2:
fragment = new BluetoothFragment();
break;
case 3:
fragment = new DisplayFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment).commit();
// update selected item and title, then close the drawer
setTitle(title);
mChannelMenu.showContent();
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
}
滑出的Fragment MenuFragment.java
package com.dzt.slidingmenudemo.fragment;
import java.util.ArrayList;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.dzt.slidingmenudemo.MenuListAdapter;
import com.dzt.slidingmenudemo.R;
import com.dzt.slidingmenudemo.domain.MenuItem;
public class MenuFragment extends Fragment implements OnItemClickListener {
private ListView mLv;
private String[] mMenuTitles;
private ArrayList<MenuItem> mMenuItem;
private MenuListAdapter mAdapter;
private OnMenuListOnItemClickListener mListener;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.menu_fragment, container,
false);
initWidgets(rootView);
return rootView;
}
private void initWidgets(View rootView) {
mLv = (ListView) rootView.findViewById(R.id.left_menu);
mMenuTitles = getResources().getStringArray(R.array.menu_title);
mMenuItem = new ArrayList<MenuItem>();
for (int i = 0; i < mMenuTitles.length; i++) {
MenuItem item = null;
if (i == 2) {
item = new MenuItem(mMenuTitles[i], R.drawable.ic_launcher,
"18", true);
} else if (i == 4) {
item = new MenuItem(mMenuTitles[i], R.drawable.ic_launcher,
"40", true);
} else {
item = new MenuItem(mMenuTitles[i], R.drawable.ic_launcher);
}
mMenuItem.add(item);
}
mAdapter = new MenuListAdapter(getActivity(), mMenuItem);
mLv.setAdapter(mAdapter);
mLv.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
mLv.setItemChecked(position, true);
mLv.setSelection(position);
if (mListener != null) {
mListener.onSelectItem(position, mMenuTitles[position]);
}
}
public void setOnMenuListOnItemClickListener(
OnMenuListOnItemClickListener listener) {
mListener = listener;
}
public interface OnMenuListOnItemClickListener {
public void onSelectItem(int position, String title);
}
}
点击Menu后,在MainActivity中实现了点击的监听器,就会切换到相应的页面
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)