MOB社会化分享具体整合方式可参看MOB官网技术文档
主要就是到相应平台申请应用做配置,只要配置正确,基本的功能就没有太大问题,当中开发者需要做的就是定义接口适应自己的项目内容。本次博客内容主要在于实现Fragment和手势的滑动处理上,具体的社会化分享功能请至本次博客对应的demo地址下载,下载地址为:
http://download.csdn.net/detail/tangzhide/9647901
该demo包含社会化分享,需要注意assert目录下的XML文件配置,可以搜索MOB网站主页学习快速集成,哪里还有其他各大平台功能介绍,如验证码等;还包含SlidingMenu滑动菜单,当中已经将github的开源项目打成jar包;另一个就是Fragment和手势的封装,可直接用于项目。
定义Fragment基类:
package com.example.fragment;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public abstract class BasicFragment extends Fragment implements IFragmentPortable{
protected Context context;
protected View view;
protected Boolean isShowFragment;
public Activity activity;
public BasicFragment() {
super();
// TODO Auto-generated constructor stub
}
public Boolean getIsShowFragment() {
return isShowFragment;
}
public void setIsShowFragment(Boolean isShowFragment) {
this.isShowFragment = isShowFragment;
}
public Context getContext() {
return context;
}
public View getView() {
return view;
}
public void setView(View view) {
this.view = view;
}
@Override
public Context getActivityContext() {
// TODO Auto-generated method stub
context = getActivity();
activity = getActivity();
return context;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
setIsShowFragment(false);
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
}
@Override
public void onDetach() {
// TODO Auto-generated method stub
super.onDetach();
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
setIsShowFragment(true);
}
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
view = inflater.inflate(getFragmentLayoutView(), container, false);
getActivityContext();
setInitMemberWidgets();
setInitMemberDataVariable();
setInitOtherWorks();
return view;
}
protected void setInitMemberWidgets(){};
protected void setInitMemberDataVariable(){};
protected void setInitOtherWorks(){}
}
上面实现的接口内容为:
public interface IFragmentPortable {
public int getFragmentLayoutView();
public Context getActivityContext();
}
处理手势的接口:
package com.example.fragment;
import android.view.MotionEvent;
public interface IFragmentMotionEventPoetable {
void doMotionEventGestruePriority(MotionEvent ev);
}
对应的在Activity中的手势监听的处理,需要实现上面的接口:
@Override
public boolean onCallBasicFragmentGesture(
MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
// TODO Auto-generated method stub
if ((e1.getX() - e2.getX() > FragmentOperator.SLIDING_FRAGMENT_DISTANCE) && (Math.abs(-velocityX) > 50d)){
fragmentOperator.rightSlidingToShowedFragment();
}
if ((e2.getX() - e1.getX() > FragmentOperator.SLIDING_FRAGMENT_DISTANCE) && (Math.abs(-velocityX) > 50d)){
fragmentOperator.leftSlidingToShowedFragment();
}
return true;
}
在dispatchTouchEvent重新分发事件:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// 用于手势事件重新分发,必须做此处理
// TODO Auto-generated method stub
iFragmentMotionEventPoetable.doMotionEventGestruePriority(ev);
return super.dispatchTouchEvent(ev);
}
实现Fragment基类的具体类FragmentFriendDemo (举出一个例子):
package com.example.fragment.demo;
import com.example.fragment.BasicFragment;
import com.example.shareqq.R;
public class FragmentFriendDemo extends BasicFragment{
@Override
public int getFragmentLayoutView() {
// TODO Auto-generated method stub
return R.layout.layout_tab2;
}
@Override
protected void setInitMemberWidgets() {
// TODO Auto-generated method stub
super.setInitMemberWidgets();
}
@Override
protected void setInitMemberDataVariable() {
// TODO Auto-generated method stub
super.setInitMemberDataVariable();
}
@Override
protected void setInitOtherWorks() {
// TODO Auto-generated method stub
super.setInitOtherWorks();
}
}
完整的代码如下:
FragmentFriendDemo 内容如上;
FragmentSettingDemo类
package com.example.fragment.demo;
import com.example.fragment.BasicFragment;
import com.example.shareqq.R;
public class FragmentSettingDemo extends BasicFragment{
@Override
public int getFragmentLayoutView() {
// TODO Auto-generated method stub
return R.layout.layout_tab4;
}
@Override
protected void setInitMemberWidgets() {
// TODO Auto-generated method stub
super.setInitMemberWidgets();
}
@Override
protected void setInitMemberDataVariable() {
// TODO Auto-generated method stub
super.setInitMemberDataVariable();
}
@Override
protected void setInitOtherWorks() {
// TODO Auto-generated method stub
super.setInitOtherWorks();
}
}
FragmentChatDemo类:
package com.example.fragment.demo;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import com.example.fragment.BasicFragment;
import com.example.shareqq.AnimActivity;
import com.example.shareqq.R;
import com.slidingmenu.lib.SlidingMenu;
public class FragmentChatDemo extends BasicFragment{
private ImageButton right_dialog_btn;
private RelativeLayout startChatRl;
@Override
public int getFragmentLayoutView() {
// TODO Auto-generated method stub
return R.layout.layout_tab1;
}
@Override
protected void setInitMemberDataVariable() {
// TODO Auto-generated method stub
super.setInitMemberDataVariable();
}
@Override
protected void setInitMemberWidgets() {
// TODO Auto-generated method stub
super.setInitMemberWidgets();
right_dialog_btn = (ImageButton) view.findViewById(R.id.right_dialog_btn);
right_dialog_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
startChatRl = (RelativeLayout) view.findViewById(R.id.start_rl);
startChatRl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
protected void setInitOtherWorks() {
// TODO Auto-generated method stub
super.setInitOtherWorks();
}
}
FragmentContactsDemo类
package com.example.fragment.demo;
import com.example.fragment.BasicFragment;
import com.example.shareqq.R;
public class FragmentContactsDemo extends BasicFragment{
public FragmentContactsDemo() {
super();
// TODO Auto-generated constructor stub
}
@Override
public int getFragmentLayoutView() {
// TODO Auto-generated method stub
return R.layout.layout_tab3;
}
@Override
protected void setInitMemberWidgets() {
// TODO Auto-generated method stub
super.setInitMemberWidgets();
}
@Override
protected void setInitMemberDataVariable() {
// TODO Auto-generated method stub
super.setInitMemberDataVariable();
}
@Override
protected void setInitOtherWorks() {
// TODO Auto-generated method stub
super.setInitOtherWorks();
}
}
工厂类:
package com.example.fragment;
import com.example.fragment.demo.FragmentChatDemo;
import com.example.fragment.demo.FragmentContactsDemo;
import com.example.fragment.demo.FragmentFriendDemo;
import com.example.fragment.demo.FragmentSettingDemo;
public class FragmentFactory {
public static final int NUMBER_ONE_FRAGMENT = 0;
public static final int NUMBER_TWO_FRAGMENT = 1;
public static final int NUMBER_THREE_FRAGMENT = 2;
public static final int NUMBER_FOUR_FRAGMENT = 3;
public static BasicFragment produceBuilder(int indexFragmentFactory){
switch (indexFragmentFactory){
case NUMBER_ONE_FRAGMENT:
return new FragmentChatDemo();
case NUMBER_TWO_FRAGMENT:
return new FragmentContactsDemo();
case NUMBER_THREE_FRAGMENT:
return new FragmentFriendDemo();
case NUMBER_FOUR_FRAGMENT:
return new FragmentSettingDemo();
default:
return null;
}
}
}
具体对所有Fragment操作的类:
package com.example.fragment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.GestureDetector.OnGestureListener;
import android.view.GestureDetector;
import android.view.MotionEvent;
public class FragmentOperator implements OnGestureListener, IFragmentMotionEventPoetable{
private GestureDetector gestureDetector;
private IFragmentSlidingMenuPortable iFragmentSlidingMenuPortable;
private FragmentManager m4FragmentManager;
private int containerViewID;
private int currentWorkingBasicFragment;
private int lastIndexFragment;
private List<Map<Integer, BasicFragment>> basicFragmentMaps;
public static final int SLIDING_FRAGMENT_DISTANCE = 200;
private FRAGMENT_SHOW_TYPE fragmentShow_TYPE;
private OnCallBasicFragmentGestureListener onCallBasicFragmentGestureListener;
public boolean isSlidingMenuShowing = false;
public void setOnCallBasicFragmentGestureListener(OnCallBasicFragmentGestureListener listener){
this.onCallBasicFragmentGestureListener = listener;
}
public void setIFragmentSlidingMenuPortable(IFragmentSlidingMenuPortable portable){
this.iFragmentSlidingMenuPortable = portable;
}
public BasicFragment getCurrentWorkingBasicFragment() {
BasicFragment basicFragment = null;
for (Map<Integer, BasicFragment> map : basicFragmentMaps){
if (map.containsKey(currentWorkingBasicFragment)){
basicFragment = map.get(currentWorkingBasicFragment);
}
}
return basicFragment;
}
private void setCurrentWorkingBasicFragment(
int currentWorkingBasicFragment, BasicFragment showBasicFragment) {
this.currentWorkingBasicFragment = currentWorkingBasicFragment;
if (gestureDetector == null){
gestureDetector = new GestureDetector(showBasicFragment.context, this);
}
}
public int setContainerViewID(int containerViewID) {
this.containerViewID = containerViewID;
return containerViewID;
}
public FragmentManager setFragmentManager(FragmentManager m4FragmentManager) {
this.m4FragmentManager = m4FragmentManager;
return m4FragmentManager;
}
public FragmentOperator(FragmentManager m4FragmentManager, int containerViewID, FRAGMENT_SHOW_TYPE fragmentShow_TYPE){
setInitMemberVariable();
this.containerViewID = containerViewID;
this.m4FragmentManager = m4FragmentManager;
this.fragmentShow_TYPE = fragmentShow_TYPE;
}
public FragmentOperator(FRAGMENT_SHOW_TYPE fragmentShow_TYPE){
this.fragmentShow_TYPE = fragmentShow_TYPE;
setInitMemberVariable();
}
private void setInitMemberVariable(){
containerViewID = -1;
lastIndexFragment = -1;
basicFragmentMaps = new ArrayList<>();
}
public void addFragmentNotSliding(int currentNewIndexFragment) throws IOException{
if (m4FragmentManager == null){
throw new IOException("m4FragmentManager 必须被实例化");
}
if (containerViewID == -1){
throw new IOException("containerViewID 值设置错误");
}
if (currentNewIndexFragment == lastIndexFragment){
return;
}
lastIndexFragment = currentNewIndexFragment;
doShowingFragment(currentNewIndexFragment);
}
private void doShowingFragment(int indexFragmentFactory){
BasicFragment showBasicFragment = FragmentFactory.produceBuilder(indexFragmentFactory);
FragmentTransaction fragmentTransaction = m4FragmentManager.beginTransaction();
fragmentTransaction.replace(containerViewID, showBasicFragment);
fragmentTransaction.commit();
setCurrentWorkingBasicFragment(indexFragmentFactory, showBasicFragment);
}
public void addSlidingBasicFragments(int indexBasicFragment) throws IOException{
if (fragmentShow_TYPE != FRAGMENT_SHOW_TYPE.BOTH_SLIDING){
throw new IOException("当前不能使用滑动方式");
}
BasicFragment showBasicFragment = FragmentFactory.produceBuilder(indexBasicFragment);
Boolean isMapExits = false;
Iterator<Map<Integer, BasicFragment>> iterator = basicFragmentMaps.iterator();
while (iterator.hasNext()) {
Map<Integer, BasicFragment> mapEntry = iterator.next();
if (mapEntry.keySet() != null && mapEntry.keySet().contains(indexBasicFragment)){
isMapExits = true;
break;
}
}
if (isMapExits){
return;
}
Map<Integer, BasicFragment> basicFragmentMap = new HashMap<>();
basicFragmentMap.put(indexBasicFragment, showBasicFragment);
basicFragmentMaps.add(basicFragmentMap);
}
public void setShowedSlidingBasicFragment(int indexBasicFragment) throws Exception{
FragmentTransaction fragmentTransaction = m4FragmentManager.beginTransaction();
if (basicFragmentMaps.size() < 1){
throw new Exception("需要先执行addSlidingBasicFragments...方法");
}
if (indexBasicFragment == -1){
throw new Exception("indexBasicFragment值不能为" + indexBasicFragment);
}
BasicFragment showBasicFragment = null;
Boolean isFound = false;
for (Map<Integer, BasicFragment> mapEntry : basicFragmentMaps){
Iterator<Map.Entry<Integer, BasicFragment>> entry = mapEntry.entrySet().iterator();
while (entry.hasNext()) {
if (indexBasicFragment == entry.next().getKey()){
showBasicFragment = mapEntry.get(indexBasicFragment);
isFound = true;
break;
}
}
if (isFound){
break;
}
}
if (showBasicFragment == null){
throw new Exception("没有indexBasicFragment值为" + indexBasicFragment + "对应的对象");
}
fragmentTransaction.replace(containerViewID, showBasicFragment);
fragmentTransaction.commit();
setCurrentWorkingBasicFragment(indexBasicFragment, showBasicFragment);
}
public enum FRAGMENT_SHOW_TYPE{
BOTH_SLIDING, ONLY_CLICK;
}
public void leftSlidingToShowedFragment(){
int currentWorkingPosition = 0;
Boolean isFound = false;
for (Map<Integer, BasicFragment> mapEntry : basicFragmentMaps){
for (Map.Entry<Integer, BasicFragment> entry : mapEntry.entrySet()){
if (entry.getKey() == currentWorkingBasicFragment){
isFound = true;
break;
}
}
if (isFound){
break;
}
currentWorkingPosition++;
}
if (currentWorkingPosition == 0){
iFragmentSlidingMenuPortable.toSlidingLeftShowMenu();
isSlidingMenuShowing = true;
return;
} else {
int indexBasicFragment = -1;
Map<Integer, BasicFragment> mapEntrys = basicFragmentMaps.get(currentWorkingPosition - 1);
for (Map.Entry<Integer, BasicFragment> mapEntry : mapEntrys.entrySet()){
indexBasicFragment = mapEntry.getKey();
}
try {
setShowedSlidingBasicFragment(indexBasicFragment);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void rightSlidingToShowedFragment(){
int currentWorkingPosition = 0;
Boolean isFound = false;
for (Map<Integer, BasicFragment> mapEntry : basicFragmentMaps){
for (Map.Entry<Integer, BasicFragment> entry : mapEntry.entrySet()){
if (entry.getKey() == currentWorkingBasicFragment){
isFound = true;
break;
}
}
if (isFound){
break;
}
currentWorkingPosition++;
}
int indexBasicFragment = -1;
if (currentWorkingPosition + 1 >= basicFragmentMaps.size()){
return;
}
if(isSlidingMenuShowing){
iFragmentSlidingMenuPortable.toSlidingRightHideMenu();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
isSlidingMenuShowing = false;
}
}, 300);
return;
}
Map<Integer, BasicFragment> mapEntrys = basicFragmentMaps.get(currentWorkingPosition + 1);
for (Map.Entry<Integer, BasicFragment> mapEntry : mapEntrys.entrySet()){
indexBasicFragment = mapEntry.getKey();
}
try {
setShowedSlidingBasicFragment(indexBasicFragment);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//-手势处理(滑动)---------------------------------------------------------------//
@Override
public boolean onDown(MotionEvent arg0) {
// TODO Auto-generated method stub
//return false;
return true;
}
/**
* e1为向量的起点,e2为向量的终点,velocityX为向量水平方向的速度,velocityY为向量垂直方向的速度。
*/
@Override
public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,
float arg3) {
// TODO Auto-generated method stub
return onCallBasicFragmentGestureListener.onCallBasicFragmentGesture(arg0, arg1, arg2, arg3);
}
@Override
public void onLongPress(MotionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
float arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent arg0) {
// TODO Auto-generated method stub
return false;
}
//-Interface--------------------------------------------//
public interface OnCallBasicFragmentGestureListener{
public boolean onCallBasicFragmentGesture(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY);
}
public interface IFragmentSlidingMenuPortable {
void toSlidingLeftShowMenu();
void toSlidingRightHideMenu();
}
//InterfaceImpl---------------------------------//
@Override
public void doMotionEventGestruePriority(MotionEvent ev) {
// TODO Auto-generated method stub
if (fragmentShow_TYPE == FRAGMENT_SHOW_TYPE.ONLY_CLICK){
return;
}
gestureDetector.onTouchEvent(ev);
}
}
Activity实现:
package com.example.shareqq;
import java.io.IOException;
import com.example.fragment.FragmentFactory;
import com.example.fragment.FragmentOperator;
import com.example.fragment.FragmentOperator.FRAGMENT_SHOW_TYPE;
import com.example.fragment.FragmentOperator.OnCallBasicFragmentGestureListener;
import com.example.fragment.FragmentOperator.IFragmentSlidingMenuPortable;
import com.example.fragment.IFragmentMotionEventPoetable;
import com.slidingmenu.lib.SlidingMenu;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.RelativeLayout;
public class AnimActivity extends FragmentActivity implements OnCallBasicFragmentGestureListener, IFragmentSlidingMenuPortable{
// private ImageView imageView;
private RelativeLayout rl_weixin;
private RelativeLayout rl_address, rl_friends, rl_setting;
private IFragmentMotionEventPoetable iFragmentMotionEventPoetable;
public FragmentOperator fragmentOperator;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.content_num_main);//anim_layout);
rl_weixin = (RelativeLayout) findViewById(R.id.rl_weixin);
rl_address = (RelativeLayout) findViewById(R.id.rl_address);
rl_friends = (RelativeLayout) findViewById(R.id.rl_friends);
rl_setting = (RelativeLayout) findViewById(R.id.rl_setting);
rl_address.setOnClickListener(new SetListener());
rl_weixin.setOnClickListener(new SetListener());
rl_friends.setOnClickListener(new SetListener());
rl_setting.setOnClickListener(new SetListener());
setSlidingMenu();
setInit();
//
// imageView = (ImageView) findViewById(R.id.test_imageview_id);
}
// public void onButtonClick(View view){
AnimationMove.slideViewUp(imageView);
// AnimationMove.playViewAnimatin(imageView);
// }
/**
* 按钮的监听。
*/
class SetListener implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rl_weixin:
try {
fragmentOperator.addFragmentNotSliding(FragmentFactory.NUMBER_ONE_FRAGMENT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.rl_address:
try {
fragmentOperator.addFragmentNotSliding(FragmentFactory.NUMBER_TWO_FRAGMENT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.rl_friends:
try {
fragmentOperator.addFragmentNotSliding(FragmentFactory.NUMBER_THREE_FRAGMENT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.rl_setting:
try {
fragmentOperator.addFragmentNotSliding(FragmentFactory.NUMBER_FOUR_FRAGMENT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
default:
break;
}
}
}
/**
* 只有点击切换
*/
public void setInit(){
fragmentOperator = new FragmentOperator(FRAGMENT_SHOW_TYPE.BOTH_SLIDING);
fragmentOperator.setContainerViewID(R.id.fragment_content_weixin);
fragmentOperator.setFragmentManager(getSupportFragmentManager());
fragmentOperator.setOnCallBasicFragmentGestureListener(this);
fragmentOperator.setIFragmentSlidingMenuPortable(this);
iFragmentMotionEventPoetable = fragmentOperator;
try {
fragmentOperator.addSlidingBasicFragments(FragmentFactory.NUMBER_ONE_FRAGMENT);
fragmentOperator.addSlidingBasicFragments(FragmentFactory.NUMBER_TWO_FRAGMENT);
fragmentOperator.addSlidingBasicFragments(FragmentFactory.NUMBER_THREE_FRAGMENT);
fragmentOperator.addSlidingBasicFragments(FragmentFactory.NUMBER_FOUR_FRAGMENT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fragmentOperator.setShowedSlidingBasicFragment(FragmentFactory.NUMBER_ONE_FRAGMENT);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 两者都有的切换
*/
public void setInit1(){
fragmentOperator = new FragmentOperator(FRAGMENT_SHOW_TYPE.ONLY_CLICK);
fragmentOperator.setContainerViewID(R.id.fragment_content_weixin);
fragmentOperator.setFragmentManager(getSupportFragmentManager());
try {
fragmentOperator.addFragmentNotSliding(FragmentFactory.NUMBER_ONE_FRAGMENT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
iFragmentMotionEventPoetable = fragmentOperator;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) { // 用于手势事件重新分发,必须做此处理
// TODO Auto-generated method stub
iFragmentMotionEventPoetable.doMotionEventGestruePriority(ev);
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onCallBasicFragmentGesture(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
// TODO Auto-generated method stub
if ((e1.getX() - e2.getX() > FragmentOperator.SLIDING_FRAGMENT_DISTANCE) && (Math.abs(-velocityX) > 50d)){
fragmentOperator.rightSlidingToShowedFragment();
}
if ((e2.getX() - e1.getX() > FragmentOperator.SLIDING_FRAGMENT_DISTANCE) && (Math.abs(-velocityX) > 50d)){
fragmentOperator.leftSlidingToShowedFragment();
}
return true;
}
private SlidingMenu slidingMenu;
public void setSlidingMenu(){
slidingMenu = new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);// 设置触屏模式
slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
slidingMenu.setShadowDrawable(R.drawable.shadow);
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
slidingMenu.setFadeDegree(0.35f); // 设置渐入渐出效果的值
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
View menuView = LayoutInflater.from(this).inflate(R.layout.activity_main, null);
slidingMenu.setMenu(R.layout.activity_main);
}
@Override
public void toSlidingLeftShowMenu() {
// TODO Auto-generated method stub
slidingMenu.toggle();
slidingMenu.showMenu();
}
@Override
public void toSlidingRightHideMenu() {
// TODO Auto-generated method stub
slidingMenu.showContent();
}
}