Mob社会化分享和Fragment手势切换

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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值