com.jeremyfeinstein.slidingmenu.lib.SlidingMenu - java examples

Here are the examples of the java api com.jeremyfeinstein.slidingmenu.lib.SlidingMenu taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

32 Examples 7

19 View Complete Implementation : AttachExample.java
Copyright Apache License 2.0
Author : jfeinstein10
public clreplaced AttachExample extends FragmentActivity {

    private SlidingMenu menu;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setreplacedle(R.string.attach);
        // set the Above View
        setContentView(R.layout.content_frame);
        getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new SampleListFragment()).commit();
        // configure the SlidingMenu
        menu = new SlidingMenu(this);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.shadow_width);
        menu.setShadowDrawable(R.drawable.shadow);
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setMenu(R.layout.menu_frame);
        getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new SampleListFragment()).commit();
    }

    @Override
    public void onBackPressed() {
        if (menu.isMenuShowing()) {
            menu.showContent();
        } else {
            super.onBackPressed();
        }
    }
}

19 View Complete Implementation : MainActivity.java
Copyright Apache License 2.0
Author : RealMoMo
public clreplaced MainActivity extends SlidingFragmentActivity {

    SlidingMenu sliding;

    ContentFragment contentFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 设置侧滑布局加载到那个布局
        setBehindContentView(R.layout.left_menu);
        // 创建侧滑内容 Fragment
        LeftMenuFragment left = new LeftMenuFragment();
        // 把创建的Fragment添加到侧滑布局中
        getSupportFragmentManager().beginTransaction().replace(R.id.leftmenu_layout, left).commit();
        // 设置侧滑属性----------------------------------
        // 获取侧滑菜单对象
        sliding = getSlidingMenu();
        // 侧滑模式:左
        sliding.setMode(SlidingMenu.LEFT);
        // 触摸模式:边缘
        sliding.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        // 设置侧滑菜单的宽度(是距离另一侧的宽度)
        // 获取屏幕宽度
        int screenW = getResources().getDisplayMetrics().widthPixels;
        sliding.setBehindOffset(screenW / 3 * 2);
        // 设置侧滑阴影宽度
        sliding.setShadowWidth(20);
        // 设置侧滑阴影图片
        sliding.setShadowDrawable(R.mipmap.ic_launcher);
        // 设置渐入渐出
        sliding.setFadeDegree(0.35f);
        contentFragment = new ContentFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.contentLayout, contentFragment).commit();
        // 初始时,加载百度,在此时加载,ContentFragment界面还没绘制出来,WebView是null(程序会崩)
        // contentFragment.setUrl("http://www.baidu.com");
        // 设置侧滑菜单的点击
        left.sereplacedemClick(new LeftMenuFragment.ItemClick() {

            @Override
            public void itemClick(String url) {
                // 调用ContentFragment的setUrl方法,加载另一个网页
                contentFragment.setUrl(url);
                // 侧滑菜单消失
                sliding.showContent();
            }
        });
        // 设置ActionBar(改了源码继承关系,才有actionbar)
        initActionBar();
    }

    private void initActionBar() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowHomeEnabled(true);
    }

    // 导航按钮的点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.gereplacedemId()) {
            case android.R.id.home:
                {
                    // 显示左铡菜单,如果正在显示,就显示内容,菜单消失
                    if (getSlidingMenu().isMenuShowing()) {
                        getSlidingMenu().showContent();
                    } else {
                        // 如果没有显示菜单,就显示菜单
                        getSlidingMenu().showMenu();
                    }
                }
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    /*
    * WebView是否返回
    *
    * */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // 判断是否按下返回键
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // 判断WebView能否返回
            if (contentFragment.getWebView().canGoBack()) {
                // 让WebView返回到上一界面
                contentFragment.getWebView().goBack();
                // 返回true,不用上级消费此触摸事件
                return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}

17 View Complete Implementation : SlidingActivityHelper.java
Copyright MIT License
Author : 6ag
public clreplaced SlidingActivityHelper {

    private Activity mActivity;

    private SlidingMenu mSlidingMenu;

    private View mViewAbove;

    private View mViewBehind;

    private boolean mBroadcasting = false;

    private boolean mOnPostCreateCalled = false;

    private boolean mEnableSlide = true;

    /**
     * Instantiates a new SlidingActivityHelper.
     *
     * @param activity the replacedociated activity
     */
    public SlidingActivityHelper(Activity activity) {
        mActivity = activity;
    }

    /**
     * Sets mSlidingMenu as a newly inflated SlidingMenu. Should be called within the activitiy's onCreate()
     *
     * @param savedInstanceState the saved instance state (unused)
     */
    public void onCreate(Bundle savedInstanceState) {
        mSlidingMenu = (SlidingMenu) LayoutInflater.from(mActivity).inflate(R.layout.slidingmenumain, null);
    }

    /**
     * Further SlidingMenu initialization. Should be called within the activitiy's onPostCreate()
     *
     * @param savedInstanceState the saved instance state (unused)
     */
    public void onPostCreate(Bundle savedInstanceState) {
        if (mViewBehind == null || mViewAbove == null) {
            throw new IllegalStateException("Both setBehindContentView must be called " + "in onCreate in addition to setContentView.");
        }
        mOnPostCreateCalled = true;
        mSlidingMenu.attachToActivity(mActivity, mEnableSlide ? SlidingMenu.SLIDING_WINDOW : SlidingMenu.SLIDING_CONTENT);
        final boolean open;
        final boolean secondary;
        if (savedInstanceState != null) {
            open = savedInstanceState.getBoolean("SlidingActivityHelper.open");
            secondary = savedInstanceState.getBoolean("SlidingActivityHelper.secondary");
        } else {
            open = false;
            secondary = false;
        }
        new Handler().post(new Runnable() {

            public void run() {
                if (open) {
                    if (secondary) {
                        mSlidingMenu.showSecondaryMenu(false);
                    } else {
                        mSlidingMenu.showMenu(false);
                    }
                } else {
                    mSlidingMenu.showContent(false);
                }
            }
        });
    }

    /**
     * Controls whether the ActionBar slides along with the above view when the menu is opened,
     * or if it stays in place.
     *
     * @param slidingActionBarEnabled True if you want the ActionBar to slide along with the SlidingMenu,
     *                                false if you want the ActionBar to stay in place
     */
    public void setSlidingActionBarEnabled(boolean slidingActionBarEnabled) {
        if (mOnPostCreateCalled)
            throw new IllegalStateException("enableSlidingActionBar must be called in onCreate.");
        mEnableSlide = slidingActionBarEnabled;
    }

    /**
     * Finds a view that was identified by the id attribute from the XML that was processed in onCreate(Bundle).
     *
     * @param id the resource id of the desired view
     * @return The view if found or null otherwise.
     */
    public View findViewById(int id) {
        View v;
        if (mSlidingMenu != null) {
            v = mSlidingMenu.findViewById(id);
            if (v != null)
                return v;
        }
        return null;
    }

    /**
     * Called to retrieve per-instance state from an activity before being killed so that the state can be
     * restored in onCreate(Bundle) or onRestoreInstanceState(Bundle) (the Bundle populated by this method
     * will be preplaceded to both).
     *
     * @param outState Bundle in which to place your saved state.
     */
    public void onSaveInstanceState(Bundle outState) {
        outState.putBoolean("SlidingActivityHelper.open", mSlidingMenu.isMenuShowing());
        outState.putBoolean("SlidingActivityHelper.secondary", mSlidingMenu.isSecondaryMenuShowing());
    }

    /**
     * Register the above content view.
     *
     * @param v      the above content view to register
     * @param params LayoutParams for that view (unused)
     */
    public void registerAboveContentView(View v, LayoutParams params) {
        if (!mBroadcasting)
            mViewAbove = v;
    }

    /**
     * Set the activity content to an explicit view. This view is placed directly into the activity's view
     * hierarchy. It can itself be a complex view hierarchy. When calling this method, the layout parameters
     * of the specified view are ignored. Both the width and the height of the view are set by default to
     * MATCH_PARENT. To use your own layout parameters, invoke setContentView(android.view.View,
     * android.view.ViewGroup.LayoutParams) instead.
     *
     * @param v The desired content to display.
     */
    public void setContentView(View v) {
        mBroadcasting = true;
        mActivity.setContentView(v);
    }

    /**
     * Set the behind view content to an explicit view. This view is placed directly into the behind view 's view hierarchy.
     * It can itself be a complex view hierarchy.
     *
     * @param view         The desired content to display.
     * @param layoutParams Layout parameters for the view. (unused)
     */
    public void setBehindContentView(View view, LayoutParams layoutParams) {
        mViewBehind = view;
        mSlidingMenu.setMenu(mViewBehind);
    }

    /**
     * Gets the SlidingMenu replacedociated with this activity.
     *
     * @return the SlidingMenu replacedociated with this activity.
     */
    public SlidingMenu getSlidingMenu() {
        return mSlidingMenu;
    }

    /**
     * Toggle the SlidingMenu. If it is open, it will be closed, and vice versa.
     */
    public void toggle() {
        mSlidingMenu.toggle();
    }

    /**
     * Close the SlidingMenu and show the content view.
     */
    public void showContent() {
        mSlidingMenu.showContent();
    }

    /**
     * Open the SlidingMenu and show the menu view.
     */
    public void showMenu() {
        mSlidingMenu.showMenu();
    }

    /**
     * Open the SlidingMenu and show the secondary menu view. Will default to the regular menu
     * if there is only one.
     */
    public void showSecondaryMenu() {
        mSlidingMenu.showSecondaryMenu();
    }

    /**
     * On key up.
     *
     * @param keyCode the key code
     * @param event   the event
     * @return true, if successful
     */
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && mSlidingMenu.isMenuShowing()) {
            showContent();
            return true;
        }
        return false;
    }
}

17 View Complete Implementation : SlidingActivityHelper.java
Copyright Apache License 2.0
Author : BigAppLink
public clreplaced SlidingActivityHelper {

    private Activity mActivity;

    private SlidingMenu mSlidingMenu;

    private View mViewAbove;

    private View mViewBehind;

    private boolean mBroadcasting = false;

    private boolean mOnPostCreateCalled = false;

    private boolean mEnableSlide = true;

    /**
     * Instantiates a new SlidingActivityHelper.
     *
     * @param activity the replacedociated activity
     */
    public SlidingActivityHelper(Activity activity) {
        mActivity = activity;
    }

    /**
     * Sets mSlidingMenu as a newly inflated SlidingMenu. Should be called within the activitiy's onCreate()
     *
     * @param savedInstanceState the saved instance state (unused)
     */
    public void onCreate(Bundle savedInstanceState) {
        mSlidingMenu = (SlidingMenu) LayoutInflater.from(mActivity).inflate(R.layout.slidingmenumain, null);
    }

    /**
     * Further SlidingMenu initialization. Should be called within the activitiy's onPostCreate()
     *
     * @param savedInstanceState the saved instance state (unused)
     */
    public void onPostCreate(Bundle savedInstanceState) {
        if (mViewBehind == null || mViewAbove == null) {
            throw new IllegalStateException("Both setBehindContentView must be called " + "in onCreate in addition to setContentView.");
        }
        mOnPostCreateCalled = true;
        mSlidingMenu.attachToActivity(mActivity, mEnableSlide ? SlidingMenu.SLIDING_WINDOW : SlidingMenu.SLIDING_CONTENT);
        final boolean open;
        final boolean secondary;
        if (savedInstanceState != null) {
            open = savedInstanceState.getBoolean("SlidingActivityHelper.open");
            secondary = savedInstanceState.getBoolean("SlidingActivityHelper.secondary");
        } else {
            open = false;
            secondary = false;
        }
        new Handler().post(new Runnable() {

            public void run() {
                if (open) {
                    if (secondary) {
                        mSlidingMenu.showSecondaryMenu(false);
                    } else {
                        mSlidingMenu.showMenu(false);
                    }
                } else {
                    mSlidingMenu.showContent(false);
                }
            }
        });
    }

    /**
     * Controls whether the ActionBar slides along with the above view when the menu is opened,
     * or if it stays in place.
     *
     * @param slidingActionBarEnabled True if you want the ActionBar to slide along with the SlidingMenu,
     * false if you want the ActionBar to stay in place
     */
    public void setSlidingActionBarEnabled(boolean slidingActionBarEnabled) {
        if (mOnPostCreateCalled)
            throw new IllegalStateException("enableSlidingActionBar must be called in onCreate.");
        mEnableSlide = slidingActionBarEnabled;
    }

    /**
     * Finds a view that was identified by the id attribute from the XML that was processed in onCreate(Bundle).
     *
     * @param id the resource id of the desired view
     * @return The view if found or null otherwise.
     */
    public View findViewById(int id) {
        View v;
        if (mSlidingMenu != null) {
            v = mSlidingMenu.findViewById(id);
            if (v != null)
                return v;
        }
        return null;
    }

    /**
     * Called to retrieve per-instance state from an activity before being killed so that the state can be
     * restored in onCreate(Bundle) or onRestoreInstanceState(Bundle) (the Bundle populated by this method
     * will be preplaceded to both).
     *
     * @param outState Bundle in which to place your saved state.
     */
    public void onSaveInstanceState(Bundle outState) {
        outState.putBoolean("SlidingActivityHelper.open", mSlidingMenu.isMenuShowing());
        outState.putBoolean("SlidingActivityHelper.secondary", mSlidingMenu.isSecondaryMenuShowing());
    }

    /**
     * Register the above content view.
     *
     * @param v the above content view to register
     * @param params LayoutParams for that view (unused)
     */
    public void registerAboveContentView(View v, LayoutParams params) {
        if (!mBroadcasting)
            mViewAbove = v;
    }

    /**
     * Set the activity content to an explicit view. This view is placed directly into the activity's view
     * hierarchy. It can itself be a complex view hierarchy. When calling this method, the layout parameters
     * of the specified view are ignored. Both the width and the height of the view are set by default to
     * MATCH_PARENT. To use your own layout parameters, invoke setContentView(android.view.View,
     * android.view.ViewGroup.LayoutParams) instead.
     *
     * @param v The desired content to display.
     */
    public void setContentView(View v) {
        mBroadcasting = true;
        mActivity.setContentView(v);
    }

    /**
     * Set the behind view content to an explicit view. This view is placed directly into the behind view 's view hierarchy.
     * It can itself be a complex view hierarchy.
     *
     * @param view The desired content to display.
     * @param layoutParams Layout parameters for the view. (unused)
     */
    public void setBehindContentView(View view, LayoutParams layoutParams) {
        mViewBehind = view;
        mSlidingMenu.setMenu(mViewBehind);
    }

    /**
     * Gets the SlidingMenu replacedociated with this activity.
     *
     * @return the SlidingMenu replacedociated with this activity.
     */
    public SlidingMenu getSlidingMenu() {
        return mSlidingMenu;
    }

    /**
     * Toggle the SlidingMenu. If it is open, it will be closed, and vice versa.
     */
    public void toggle() {
        mSlidingMenu.toggle();
    }

    /**
     * Close the SlidingMenu and show the content view.
     */
    public void showContent() {
        mSlidingMenu.showContent();
    }

    /**
     * Open the SlidingMenu and show the menu view.
     */
    public void showMenu() {
        mSlidingMenu.showMenu();
    }

    /**
     * Open the SlidingMenu and show the secondary menu view. Will default to the regular menu
     * if there is only one.
     */
    public void showSecondaryMenu() {
        mSlidingMenu.showSecondaryMenu();
    }

    /**
     * On key up.
     *
     * @param keyCode the key code
     * @param event the event
     * @return true, if successful
     */
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && mSlidingMenu.isMenuShowing()) {
            showContent();
            return true;
        }
        return false;
    }
}

17 View Complete Implementation : HomeActivity.java
Copyright Apache License 2.0
Author : JoeSteven
// 打开侧滑菜单
public void openMenu(View view) {
    // 拿到侧滑菜单对象
    SlidingMenu slidingMenu = getSlidingMenu();
    slidingMenu.toggle();
}

16 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v2.0
Author : ikantech
private void setupLeftMenu() {
    SlidingMenu sm = getSlidingMenu();
    setBehindContentView(R.layout.left_menu_frame);
    sm.setShadowDrawable(R.drawable.left_menu_shadow);
    mLeftMenu = new SideMenuFragment();
    mLeftMenu.setMode(SlidingMenu.LEFT);
    // set the Behind View
    getSupportFragmentManager().beginTransaction().replace(R.id.left_menu_frame, mLeftMenu).commit();
}

16 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v2.0
Author : ikantech
private void setupRightMenu() {
    SlidingMenu sm = getSlidingMenu();
    setBehindContentView(R.layout.right_menu_frame);
    sm.setShadowDrawable(R.drawable.right_menu_shadow);
    mRightMenu = new SideMenuFragment();
    mRightMenu.setMode(SlidingMenu.RIGHT);
    // set the Behind View
    getSupportFragmentManager().beginTransaction().replace(R.id.right_menu_frame, mRightMenu).commit();
}

16 View Complete Implementation : SplashActivity.java
Copyright MIT License
Author : Urucas
public clreplaced SplashActivity extends SlidingSupportActionBarActivity {

    private static final String TAG_NAME = "SplashActivity";

    public static final int SCAN_INTENT = 1;

    private static RemoteControl remote;

    private ControlFragment controlFragment;

    private SlidingMenu sm;

    private LeftMenuFragment leftMenuFragment;

    private android.support.v7.app.ActionBar actionBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Crashlytics.start(this);
        setContentView(R.layout.activity_splash);
        setBehindContentView(R.layout.frame_leftmenu);
        sm = getSlidingMenu();
        sm.setMode(SlidingMenu.LEFT);
        sm.setShadowWidthRes(R.dimen.shadow_width);
        sm.setShadowDrawable(R.drawable.shadow);
        sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        sm.setFadeDegree(0.35f);
        sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        setSlidingActionBarEnabled(false);
        leftMenuFragment = new LeftMenuFragment();
        leftMenuFragment.setActivity(SplashActivity.this);
        getSupportFragmentManager().beginTransaction().replace(R.id.frame_leftmenu, leftMenuFragment).commit();
        try {
            actionBar = getSupportActionBar();
            actionBar.setDisplayHomeAsUpEnabled(false);
            actionBar.setreplacedle("");
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            actionBar.setCustomView(R.layout.main_bar);
            ImageButton menuBtt = (ImageButton) actionBar.getCustomView().findViewById(R.id.menuBtt);
            menuBtt.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    toggle();
                }
            });
        } catch (Exception e) {
            Log.d(TAG_NAME, e.getMessage());
            e.printStackTrace();
        }
        remote = new RemoteControl(SplashActivity.this, PopcornApplication.getSetting(PopcornApplication.PT_HOST), PopcornApplication.getSetting(PopcornApplication.PT_PORT), PopcornApplication.getSetting(PopcornApplication.PT_USER), PopcornApplication.getSetting(PopcornApplication.PT_Preplaced));
        showControl();
    }

    public static RemoteControl getRemoteControl() {
        return remote;
    }

    public void showControl() {
        controlFragment = new ControlFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.frame, controlFragment).commit();
    }

    public void connectionError(int error) {
        Utils.Toast(SplashActivity.this, error);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        if (requestCode == SCAN_INTENT && resultCode == RESULT_OK) {
            leftMenuFragment.updateData();
        }
    }

    public void scanCode() {
        Intent intent = new Intent(SplashActivity.this, ScannerActivity.clreplaced);
        startActivityForResult(intent, SplashActivity.SCAN_INTENT);
    }
}

15 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v2.0
Author : ikantech
private void setupSideMenu() {
    SlidingMenu sm = getSlidingMenu();
    setupLeftMenu();
    sm.setSecondaryMenu(R.layout.right_menu_frame);
    sm.setSecondaryShadowDrawable(R.drawable.right_menu_shadow);
    mRightMenu = new SideMenuFragment();
    mRightMenu.setMode(SlidingMenu.RIGHT);
    // set the Behind View
    getSupportFragmentManager().beginTransaction().replace(R.id.right_menu_frame, mRightMenu).commit();
}

15 View Complete Implementation : CustomAnimation.java
Copyright Apache License 2.0
Author : jfeinstein10
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // set the Above View
    setContentView(R.layout.content_frame);
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new SampleListFragment()).commit();
    SlidingMenu sm = getSlidingMenu();
    setSlidingActionBarEnabled(true);
    sm.setBehindScrollScale(0.0f);
    sm.setBehindCanvasTransformer(mTransformer);
}

14 View Complete Implementation : HomeActivity.java
Copyright GNU General Public License v3.0
Author : Marlinski
/**
 * @author Lucien Loiseau
 */
public clreplaced HomeActivity extends AppCompatActivity {

    private static final String TAG = "HomeActivity";

    private CharSequence mreplacedle;

    private FragmentNavigationDrawer mNavigationDrawerFragment;

    private FragmentNetworkDrawer mNetworkDrawerFragment;

    public SlidingMenu slidingMenu;

    private View notifStatus;

    private View notifChat;

    private ViewPager viewPager;

    private HomePagerAdapter pagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        mreplacedle = getreplacedle();
        /* sliding menu with both right and left drawer */
        slidingMenu = new SlidingMenu(this);
        slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
        slidingMenu.setShadowDrawable(R.drawable.shadow);
        slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        slidingMenu.setFadeDegree(0.35f);
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
        slidingMenu.setMenu(R.layout.slidingmenu_navigation_drawer);
        slidingMenu.setSecondaryMenu(R.layout.slidingmenu_network_drawer);
        slidingMenu.setSecondaryShadowDrawable(R.drawable.shadowright);
        if (savedInstanceState == null) {
            mNavigationDrawerFragment = new FragmentNavigationDrawer();
            mNetworkDrawerFragment = new FragmentNetworkDrawer();
            this.getSupportFragmentManager().beginTransaction().replace(R.id.navigation_drawer_frame, mNavigationDrawerFragment).commit();
            this.getSupportFragmentManager().beginTransaction().replace(R.id.network_drawer_frame, mNetworkDrawerFragment).commit();
        } else {
            mNavigationDrawerFragment = (FragmentNavigationDrawer) this.getSupportFragmentManager().findFragmentById(R.id.navigation_drawer_frame);
            mNetworkDrawerFragment = (FragmentNetworkDrawer) this.getSupportFragmentManager().findFragmentById(R.id.network_drawer_frame);
        }
        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
        /*
         * the tablayout for status and chat message with a viewpager.
         * note that we cannot swipe views with the viewpager as the swipe
         * gesture is catched by slidingmenu to slide the panel
         */
        TabLayout tabLayout = (TabLayout) findViewById(R.id.home_tab_layout);
        viewPager = (ViewPager) findViewById(R.id.home_viewpager);
        pagerAdapter = new HomePagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(pagerAdapter);
        viewPager.addOnPageChangeListener(onPageChangeListener);
        tabLayout.setupWithViewPager(viewPager);
        // little hack to set the icons instead of text
        notifStatus = renderTabView(this, R.drawable.ic_world, (ViewGroup) tabLayout.getParent());
        notifChat = renderTabView(this, R.drawable.ic_forum_white_24dp, (ViewGroup) tabLayout.getParent());
        tabLayout.getTabAt(0).setCustomView(notifStatus);
        tabLayout.getTabAt(1).setCustomView(notifChat);
        tabLayout.setSelectedTabIndicatorHeight(10);
        // for notification
        refreshStatusNotifications();
        refreshChatNotifications();
        EventBus.getDefault().register(this);
    }

    @Override
    protected void onDestroy() {
        if (EventBus.getDefault().isRegistered(this))
            EventBus.getDefault().unregister(this);
        super.onDestroy();
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            slidingMenu.toggle();
            return true;
        }
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (slidingMenu.isMenuShowing()) {
                slidingMenu.toggle();
                return true;
            }
        }
        return super.onKeyUp(keyCode, event);
    }

    /*
     * Receive Bluetooth Enable/Disable
     * We forward it to the FragmentNetworkDrawer
     */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode) {
            case BluetoothUtil.REQUEST_ENABLE_BT:
            case BluetoothUtil.REQUEST_ENABLE_DISCOVERABLE:
                mNetworkDrawerFragment.manageBTCode(requestCode, resultCode, data);
                break;
        }
    }

    public View renderTabView(Context context, int iconResource, ViewGroup parent) {
        RelativeLayout view = (RelativeLayout) LayoutInflater.from(context).inflate(R.layout.badge_tab_layout, parent, false);
        view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        ((ImageView) view.findViewById(R.id.tab_icon)).setImageResource(iconResource);
        ((TextView) view.findViewById(R.id.tab_badge)).setVisibility(View.INVISIBLE);
        return view;
    }

    public void refreshStatusNotifications() {
        PushStatusDatabase.StatusQueryOption statusQueryOption = new PushStatusDatabase.StatusQueryOption();
        statusQueryOption.filterFlags = PushStatusDatabase.StatusQueryOption.FILTER_READ;
        statusQueryOption.read = false;
        statusQueryOption.query_result = PushStatusDatabase.StatusQueryOption.QUERY_RESULT.COUNT;
        DatabaseFactory.getPushStatusDatabase(RumbleApplication.getContext()).getStatuses(statusQueryOption, onRefreshStatuses);
    }

    DatabaseExecutor.ReadableQueryCallback onRefreshStatuses = new DatabaseExecutor.ReadableQueryCallback() {

        @Override
        public void onReadableQueryFinished(Object object) {
            final Integer count = (Integer) object;
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    TextView view = (TextView) notifStatus.findViewById(R.id.tab_badge);
                    if (count > 0) {
                        view.setText(count.toString());
                        view.setVisibility(View.VISIBLE);
                    } else {
                        view.setVisibility(View.INVISIBLE);
                    }
                }
            });
        }
    };

    public void refreshChatNotifications() {
        ChatMessageDatabase.ChatMessageQueryOption messageQueryOptions = new ChatMessageDatabase.ChatMessageQueryOption();
        messageQueryOptions.filterFlags = ChatMessageDatabase.ChatMessageQueryOption.FILTER_READ;
        messageQueryOptions.read = false;
        messageQueryOptions.query_result = ChatMessageDatabase.ChatMessageQueryOption.QUERY_RESULT.COUNT;
        DatabaseFactory.getChatMessageDatabase(RumbleApplication.getContext()).getChatMessage(messageQueryOptions, onRefreshChatMessages);
    }

    DatabaseExecutor.ReadableQueryCallback onRefreshChatMessages = new DatabaseExecutor.ReadableQueryCallback() {

        @Override
        public void onReadableQueryFinished(Object object) {
            final Integer count = (Integer) object;
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    TextView view = (TextView) notifChat.findViewById(R.id.tab_badge);
                    if (count > 0) {
                        view.setText(count.toString());
                        view.setVisibility(View.VISIBLE);
                    } else {
                        view.setVisibility(View.INVISIBLE);
                    }
                }
            });
        }
    };

    ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // ignore
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        // ignore
        }

        @Override
        public void onPageSelected(int position) {
            FragmentChatMessageList fragment = (FragmentChatMessageList) pagerAdapter.gereplacedem(1);
            if (position == 1) {
                fragment.pageIn();
            } else {
                fragment.pageOut();
            }
        }
    };

    public boolean isChatHasFocus() {
        return (viewPager.getCurrenreplacedem() == 1);
    }

    /*
     * Handling Events coming from outside the activity
     */
    public void onEvent(StatusDatabaseEvent event) {
        refreshStatusNotifications();
    }

    public void onEvent(ChatMessageInsertedEvent event) {
        refreshChatNotifications();
    }

    public void onEvent(ChatMessageUpdatedEvent event) {
        refreshChatNotifications();
    }
}

13 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v3.0
Author : cesco89
public clreplaced MainActivity extends FragmentActivity implements OnItemClickListener {

    private static FrameLayout mContainer;

    public static SlidingMenu menu;

    private String[] colors;

    public static DatabaseHandler db;

    public static VddDatabaseHandler vddDb;

    public static Context mContext;

    public static SharedPreferences mPrefs;

    public static ListView menulist;

    private static FrameLayout mGlossaryContainer;

    public static CustomArrayAdapter mAdapter;

    public static final int[] icons = { 0, R.drawable.meter, R.drawable.bar_chart, 0, R.drawable.flash_on, R.drawable.lcd, R.drawable.plus_minus, 0, R.drawable.beaker, R.drawable.life_guard, R.drawable.settings_two, 0, R.drawable.heart, 0, R.drawable.doc_zip, R.drawable.backup, R.drawable.radiation, 0, R.drawable.doc, R.drawable.magic_wand, R.drawable.eye, 0, R.drawable.settings_one, R.drawable.info };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_container);
        RootTools.debugMode = false;
        boolean access = RootTools.isAccessGiven();
        boolean busybox = RootTools.isBusyboxAvailable();
        if (!access) {
            showRootWarning();
        }
        if (!busybox) {
            showBusyBoxWarning();
        }
        mContainer = (FrameLayout) findViewById(R.id.activity_container);
        mContext = this;
        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);
        View v = this.getLayoutInflater().inflate(R.layout.menu_list, null, false);
        menulist = (ListView) v.findViewById(R.id.navbarlist);
        db = new DatabaseHandler(this);
        vddDb = new VddDatabaseHandler(this);
        menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT_RIGHT);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.shadow_width);
        menu.setShadowDrawable(R.drawable.shadow);
        // menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        menu.setBehindWidthRes(R.dimen.slidingmenu_offset);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setMenu(v);
        View vv = this.getLayoutInflater().inflate(R.layout.menu_glossary, null, false);
        mGlossaryContainer = (FrameLayout) vv.findViewById(R.id.menu_frame);
        menu.setSecondaryMenu(vv);
        menu.setSecondaryShadowDrawable(R.drawable.shadow_right);
        mAdapter = new CustomArrayAdapter(this, R.layout.menu_main_list_item, getResources().getStringArray(R.array.menu_entries), getResources().getStringArray(R.array.menu_descs), getResources().getStringArray(R.array.menu_colors), icons);
        menulist.setAdapter(mAdapter);
        menulist.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        menulist.setOnItemClickListener(this);
        colors = getResources().getStringArray(R.array.menu_colors);
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        Fragment prefs = new TimeInState();
        CpuGlossaryFragment glo = new CpuGlossaryFragment();
        ft.replace(R.id.activity_container, prefs);
        ft.replace(R.id.menu_frame, glo);
        ft.commit();
        setAppTheme();
        mountParreplacedions();
        copyHelpers();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main_container, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.gereplacedemId()) {
            case android.R.id.home:
                menu.toggle(true);
                break;
            case R.id.help:
                if (menu.isSecondaryMenuShowing()) {
                    menu.toggle(true);
                } else {
                    menu.showSecondaryMenu(true);
                }
                break;
        }
        return false;
    }

    @Override
    public void onStart() {
        super.onStart();
        // Add this method.
        EasyTracker.getInstance(this).activityStart(this);
    }

    @Override
    public void onStop() {
        super.onStop();
        // Add this method.
        EasyTracker.getInstance(this).activityStop(this);
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
        Fragment f = null;
        Fragment glo = null;
        switch(arg2) {
            case 1:
                f = new TimeInState();
                glo = new CpuGlossaryFragment();
                break;
            case 2:
                f = new CPUInfo();
                glo = new CpuGlossaryFragment();
                break;
            case 4:
                f = new CpuPreferenceFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 5:
                f = new GpuPreferenceFragment();
                glo = new GpuGlossaryFragment();
                break;
            case 6:
                f = new UvPreferenceFragment();
                glo = new UvGlossaryFragment();
                break;
            case 8:
                f = new KernelPreferenceFragment();
                glo = new KernelGlossaryFragment();
                break;
            case 9:
                f = new LowMemoryKillerFragment();
                glo = new LmkGlossaryFragment();
                break;
            case 10:
                f = new VM();
                glo = new VmGlossaryFragment();
                break;
            case 12:
                f = new ReviewBootPreferenceFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 14:
                f = new FileManagerFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 15:
                f = new BackupFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 16:
                f = new CustomRecoveryCommandFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 18:
                f = new PropModder();
                glo = new CpuGlossaryFragment();
                break;
            case 19:
                f = new InitD();
                glo = new CpuGlossaryFragment();
                break;
            case 20:
                f = new WallpaperEffectsFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 22:
                f = new SettingsFragment();
                glo = new CpuGlossaryFragment();
                break;
            case 23:
                f = new infos();
                glo = new CpuGlossaryFragment();
                // showCredits();
                break;
        }
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        // This adds the newly created Preference fragment to my main layout, shown below
        ft.replace(R.id.activity_container, f);
        ft.replace(R.id.menu_frame, glo);
        // By hiding the main fragment, transparency isn't an issue
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.addToBackStack("TAG");
        ft.commit();
    // menu.toggle(true);
    }

    @Override
    public void onBackPressed() {
        FragmentManager fm = getFragmentManager();
        if (fm.getBackStackEntryCount() > 0) {
            Log.i("MainActivity", "popping backstack");
            fm.popBackStack();
        } else {
            Log.i("MainActivity", "nothing on backstack, calling super");
            super.onBackPressed();
        }
    }

    public void showRootWarning() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setreplacedle(getResources().getString(R.string.rc_replacedle));
        builder.setMessage(getResources().getString(R.string.rc_desc));
        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
                MainActivity.this.finish();
            }
        });
        builder.create().show();
    }

    public void showBusyBoxWarning() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setreplacedle(getResources().getString(R.string.bb_replacedle));
        builder.setMessage(getResources().getString(R.string.bb_desc));
        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
                MainActivity.this.finish();
            }
        });
        builder.create().show();
    }

    public void showCredits() {
        PackageInfo pInfo = null;
        try {
            pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String version = pInfo.versionName;
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setreplacedle(getResources().getString(R.string.app_name) + " V: " + version);
        builder.setIcon(R.drawable.ic_launcher);
        builder.setMessage(Html.fromHtml("<p>" + "Some <strong>KernelTweaker</strong> clreplacedes and xmls are based on OpenSource projects:</p>" + "<br><p><strong>AOKP</strong> : <a href=\"https://github.com/AOKP\">https://github.com/AOKP</a><br />" + "<strong>OMNI</strong>: <a href=\"https://github.com/omnirom/\">https://github.com/omnirom/</a><br />" + "<strong>Root-Tools </strong>: <a href=\"https://code.google.com/p/roottools/\">https://code.google.com/p/roottools/</a><br />" + "<strong>SlidingMenu by jfeinstein10 </strong>: <a href=\"https://github.com/jfeinstein10/SlidingMenu\">https://github.com/jfeinstein10/SlidingMenu</a></p>" + "<p>" + "<u>A HUGE thanks goes to these guys, who makes Android better every day. A lot of thanks also to all our kernel developers, without their work this application has no reason to exist!</u></p>"));
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });
        builder.create().show();
    }

    private void mountParreplacedions() {
        CommandCapture command = new CommandCapture(0, "busybox mount -o rw,remount /sys");
        try {
            RootTools.getShell(true).add(command);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TimeoutException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (RootDeniedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void setAppTheme() {
        boolean light = mPrefs.getBoolean(SettingsFragment.KEY_THEME, false);
        if (light) {
            mContext.setTheme(R.style.AppLight);
            menu.setBackground(mContext.getResources().getDrawable(R.drawable.bg_menu_light));
            mContainer.setBackground(mContext.getResources().getDrawable(R.drawable.bg_light));
            mGlossaryContainer.setBackground(mContext.getResources().getDrawable(R.drawable.bg_menu_light));
            menulist.setDivider(new ColorDrawable(Color.parseColor("#bbbbbb")));
            menulist.setDividerHeight(2);
        } else {
            mContext.setTheme(R.style.AppTheme);
            menu.setBackground(mContext.getResources().getDrawable(R.drawable.bg_menu_dark));
            ;
            mContainer.setBackground(mContext.getResources().getDrawable(R.drawable.bg_dark));
            mGlossaryContainer.setBackground(mContext.getResources().getDrawable(R.drawable.bg_menu_dark));
        }
    }

    private void copyHelpers() {
        if (!new File(this.getFilesDir().getPath() + "/helpers.sh").exists()) {
            InputStream stream = null;
            OutputStream output = null;
            try {
                stream = this.getreplacedets().open("helpers.sh");
                output = new BufferedOutputStream(new FileOutputStream(this.getFilesDir() + "/helpers.sh"));
                byte[] data = new byte[1024];
                int count;
                while ((count = stream.read(data)) != -1) {
                    output.write(data, 0, count);
                }
                output.flush();
                output.close();
                stream.close();
                stream = null;
                output = null;
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

12 View Complete Implementation : SlidingMenuSampleActivity.java
Copyright Apache License 2.0
Author : android-opensource-library-56
void initializeMenuLayout(SlidingMenu menu) {
    ListView listView = (ListView) menu.findViewById(R.id.menu_list);
    final List<Integer> itemsIcon = new ArrayList<Integer>();
    itemsIcon.add(R.drawable.icon_refresh);
    itemsIcon.add(R.drawable.icon_account);
    itemsIcon.add(R.drawable.icon_home);
    itemsIcon.add(R.drawable.icon_group);
    final List<String> itemsreplacedle = new ArrayList<String>();
    itemsreplacedle.add("Refresh");
    itemsreplacedle.add("Account");
    itemsreplacedle.add("Home");
    itemsreplacedle.add("Group");
    List<Map<String, MenuItem>> items = new ArrayList<Map<String, MenuItem>>();
    for (int i = 0; i < itemsreplacedle.size(); i++) {
        Map<String, MenuItem> map = new HashMap<String, MenuItem>();
        MenuItem menuItem = new MenuItem();
        menuItem.icon = itemsIcon.get(i);
        menuItem.replacedle = itemsreplacedle.get(i);
        map.put(ICON, menuItem);
        map.put(replacedLE, menuItem);
        items.add(map);
    }
    SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.sliding_menu_item, new String[] { ICON, replacedLE }, new int[] { R.id.icon, R.id.replacedle });
    adapter.setViewBinder(new ViewBinder() {

        @Override
        public boolean setViewValue(View view, Object data, String textRepresentation) {
            MenuItem menuItem = (MenuItem) data;
            switch(view.getId()) {
                case R.id.icon:
                    ((ImageView) view).setImageResource(menuItem.icon);
                    break;
                case R.id.replacedle:
                    ((TextView) view).setText(menuItem.replacedle);
                    break;
            }
            return true;
        }
    });
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.d(TAG, "onItemClick");
        }
    });
}

11 View Complete Implementation : MainActivity.java
Copyright Apache License 2.0
Author : buddycloud
private void customizeMenu() {
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setFadeDegree(0.15f);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    sm.setOnOpenedListener(new OnOpenedListener() {

        @Override
        public void onOpened() {
            fragmentChanged();
        }
    });
    sm.setOnClosedListener(new OnClosedListener() {

        @Override
        public void onClosed() {
            fragmentChanged();
        }
    });
}

11 View Complete Implementation : HomeActivity.java
Copyright Apache License 2.0
Author : JoeSteven
// 初始化侧滑菜单
private void initSlideMenu() {
    setBehindContentView(R.layout.menu_home);
    // 获取到slidingMenu对象
    SlidingMenu slidingMenu = getSlidingMenu();
    slidingMenu.setMode(SlidingMenu.RIGHT);
    slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
    slidingMenu.setShadowDrawable(R.drawable.shadow);
    // 设置为全屏拉出菜单
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    // 设置菜单拉出后剩余屏幕宽度
    // 让侧拉菜单充满屏幕的四分之三
    int menuWidth = getWitdh();
    slidingMenu.setBehindOffset(menuWidth);
    slidingMenu.setOnCloseListener(new SlidingMenu.OnCloseListener() {

        @Override
        public void onClose() {
            Log.d("changecity", "菜单关闭");
            mFragWether.refreshData();
            mFragSlideMenu.stopAlarmMusic();
        }
    });
}

11 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v2.0
Author : kysonzhu
/**
 * main activity
 *
 * @author dell
 */
public clreplaced MainActivity extends WallWrapperBaseFragmentActivity implements OnPageChangeListener, OnClickListener, CategoryFragmentListener, OnHeaderRefreshListener, OnFooterRefreshListener, OnItemClickListener {

    private ViewPager pager;

    private ArrayList<Fragment> fragments;

    private ViewPagerAdapter mAdapter;

    public SlidingMenu menu;

    private Intent intent;

    private RadioButton recommendedButton;

    private RadioButton latestButton;

    private RadioButton categoryButton;

    private ListView menuListView;

    private ImageView menuImageView;

    private ImageView searchImageView;

    Boolean isFirstTimeFetchDataLatest = true;

    Boolean isFirstTimeFetchDataRecommended = true;

    Boolean isFirstTimeFetchDataCategory = true;

    private int currentPageLatest;

    private int currentPageRecommended;

    public static final int STEP_LOADIMAGE = 30;

    private static boolean isFromRefreshData;

    private static boolean isFromRefreshDataRecommended;

    private ArrayList<Group> latestGroups;

    private ArrayList<Group> recommendedGroups;

    private int currentPage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        UmengUpdateAgent.update(this);
        currentPageLatest = 0;
        currentPageRecommended = 0;
        currentPage = 0;
        isFromRefreshData = true;
        isFromRefreshDataRecommended = true;
        latestGroups = new ArrayList<Group>();
        recommendedGroups = new ArrayList<Group>();
        setContentView(R.layout.activity_main);
        pager = (ViewPager) findViewById(R.id.main_pager);
        pager.setOffscreenPageLimit(2);
        fragments = new ArrayList<Fragment>();
        menuImageView = (ImageView) findViewById(R.id.main_menu_imageView);
        // 菜单点击
        menuImageView.setOnClickListener(this);
        searchImageView = (ImageView) findViewById(R.id.main_search_imageview);
        // 搜索点击
        searchImageView.setOnClickListener(this);
        recommendedButton = (RadioButton) findViewById(R.id.main_recommended_radio);
        recommendedButton.setOnClickListener(this);
        latestButton = (RadioButton) findViewById(R.id.main_latest_radio);
        latestButton.setOnClickListener(this);
        categoryButton = (RadioButton) findViewById(R.id.main_category_radio);
        categoryButton.setOnClickListener(this);
        LatestFragment latestFragment = new LatestFragment();
        RecommendedFragment recommendedFragment = new RecommendedFragment();
        CategoryFragment categoryFragment = new CategoryFragment();
        categoryFragment.setCategoryFragmentListener(this);
        fragments.add(latestFragment);
        fragments.add(recommendedFragment);
        fragments.add(categoryFragment);
        mAdapter = new ViewPagerAdapter(getSupportFragmentManager(), fragments);
        pager.setAdapter(mAdapter);
        pager.setOnPageChangeListener(this);
        menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.shadow_width);
        menu.setShadowDrawable(R.drawable.slidingmenu_shadow);
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setMenu(R.layout.layout_menu);
        menu.setMode(SlidingMenu.LEFT);
        menu.setMenu(R.layout.layout_menu);
        long screenWidth = WallWrapperEnvConfigure.getScreenWidth();
        menu.setBehindWidth((int) (screenWidth * 0.7));
        menuListView = (ListView) menu.getMenu().findViewById(R.id.menu_listview);
        menuListView.setAdapter(new MenuListViewAdapter(this));
        menuListView.setOnItemClickListener(this);
    }

    @Override
    public void alreadyBindBaseViewModel() {
        // TODO Auto-generated method stub
        super.alreadyBindBaseViewModel();
        this.setCurrentPage(0);
    }

    @Override
    public void refreshData(String method) {
        super.refreshData(method);
        dismissProgress();
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_GETRECOMMENDEDLIST)) {
            RecommendedFragment fragment = (RecommendedFragment) fragments.get(1);
            fragment.hideHeaderViewAndFooterView();
            WallWrapperViewModel viewModel = (WallWrapperViewModel) this.baseViewModel;
            ArrayList<Group> groups = viewModel.groups;
            if (null != groups) {
                if (MainActivity.isFromRefreshDataRecommended) {
                    recommendedGroups.clear();
                    recommendedGroups.addAll(groups);
                    RecommendedFragmentAdapter adapter = new RecommendedFragmentAdapter(this, recommendedGroups);
                    fragment.setAdapter(adapter);
                } else {
                    // is load more
                    recommendedGroups.addAll(groups);
                    RecommendedFragmentAdapter adapter = fragment.getAdapter();
                    // fragment.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                // adapter.notifyAll();
                }
                fragment.setGONE();
            }
        } else if (method.equals(WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST)) {
            LatestFragment fragment = (LatestFragment) fragments.get(0);
            WallWrapperViewModel viewModel = (WallWrapperViewModel) this.baseViewModel;
            fragment.hideHeaderViewAndFooterView();
            ArrayList<Group> groups = viewModel.groups;
            if (null != groups) {
                // is refresh data
                if (MainActivity.isFromRefreshData) {
                    latestGroups.clear();
                    latestGroups.addAll(groups);
                    // GridView latestGridView = (GridView)
                    // findViewById(R.id.fragment_latest_gridview);
                    LatestFragmentAdapter adapter = new LatestFragmentAdapter(MainActivity.this, latestGroups);
                    fragment.setAdapter(adapter);
                } else {
                    // is load more
                    latestGroups.addAll(groups);
                    LatestFragmentAdapter adapter = fragment.getAdapter();
                    // fragment.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                }
                fragment.setGONE();
            }
        } else if (method.equals(WallWrapperServiceMediator.SERVICENAME_GETCATEGORYLIST)) {
            WallWrapperViewModel viewModel = (WallWrapperViewModel) this.baseViewModel;
            ArrayList<Category> categorys = viewModel.categorys;
            if (null != categorys) {
                CategoryFragment fragment = (CategoryFragment) fragments.get(2);
                CategoryListViewAdapter adapter = new CategoryListViewAdapter(this, categorys);
                fragment.setAdapter(adapter);
                fragment.setGONE();
            }
        }
    }

    public void setCurrentPage(int position) {
        pager.setCurrenreplacedem(position);
        currentPage = position;
        onPageSelected(position);
    }

    private void highligthButton(int index) {
        switch(index) {
            case 0:
                {
                    latestButton.setChecked(true);
                    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                }
                break;
            case 1:
                {
                    recommendedButton.setChecked(true);
                    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                }
                break;
            case 2:
                {
                    categoryButton.setChecked(true);
                    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void onPageSelected(int position) {
        currentPage = position;
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        if (null == viewModel)
            return;
        this.highligthButton(position);
        if (position == 0) {
            if (isFirstTimeFetchDataLatest) {
                int status = NetworkStatus.networkStatus();
                if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
                    viewModel.start = currentPageLatest + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST);
                    isFirstTimeFetchDataLatest = false;
                } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
                    LatestFragment latestFragment = (LatestFragment) fragments.get(position);
                    latestFragment.showNoNetworkView(true);
                    isFirstTimeFetchDataLatest = true;
                }
            }
        } else if (position == 1) {
            if (isFirstTimeFetchDataRecommended) {
                int status = NetworkStatus.networkStatus();
                if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
                    showProgress();
                    viewModel.start = currentPageRecommended + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETRECOMMENDEDLIST);
                    isFirstTimeFetchDataRecommended = false;
                } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
                    RecommendedFragment recommendedFragment = (RecommendedFragment) fragments.get(position);
                    recommendedFragment.showNoNetworkView(true);
                    isFirstTimeFetchDataRecommended = true;
                }
            }
        } else {
            if (isFirstTimeFetchDataCategory) {
                int status = NetworkStatus.networkStatus();
                if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
                    showProgress();
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETCATEGORYLIST);
                    isFirstTimeFetchDataCategory = false;
                } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
                    CategoryFragment categoryFragment = (CategoryFragment) fragments.get(position);
                    categoryFragment.showNoNetworkView(true);
                    isFirstTimeFetchDataCategory = true;
                }
            }
        }
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
    }

    @SuppressLint("ServiceCast")
    @Override
    public void onClick(View view) {
        switch(view.getId()) {
            case R.id.main_latest_radio:
                {
                    MainActivity.this.setCurrentPage(0);
                }
                break;
            case R.id.main_recommended_radio:
                {
                    MainActivity.this.setCurrentPage(1);
                }
                break;
            case R.id.main_category_radio:
                {
                    MainActivity.this.setCurrentPage(2);
                }
                break;
            case R.id.main_menu_imageView:
                {
                    menu.showMenu();
                }
                break;
            case R.id.main_search_imageview:
                {
                    SearchViewModel viewModel = (SearchViewModel) ViewModelManager.manager().newViewModel(SearchActivity.clreplaced.getName());
                    Route.route().nextController(MainActivity.this, viewModel, Route.WITHOUT_RESULTCODE);
                }
                break;
        }
    }

    public void latestNetWork(View v) {
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            viewModel.start = 0 + "";
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST);
            isFirstTimeFetchDataLatest = false;
        }
    }

    @Override
    public void requestFailedHandle(String method, int errorCode, String errorMsg) {
        super.requestFailedHandle(method, errorCode, errorMsg);
        dismissProgress();
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST)) {
            if (!isFromRefreshData) {
                currentPageLatest -= STEP_LOADIMAGE;
            }
            LatestFragment fragment = (LatestFragment) fragments.get(0);
            fragment.hideHeaderViewAndFooterView();
        }
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_GETRECOMMENDEDLIST)) {
            if (!isFromRefreshDataRecommended) {
                currentPageRecommended -= STEP_LOADIMAGE;
            }
            RecommendedFragment recommendedFragment = (RecommendedFragment) fragments.get(1);
            recommendedFragment.hideHeaderViewAndFooterView();
        }
        if (1001 == errorCode) {
            Toast.makeText(this, "无结果", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, errorMsg, Toast.LENGTH_SHORT).show();
        }
    // Toast.makeText(MainActivity.this, errorMsg,
    // Toast.LENGTH_SHORT).show();
    }

    @Override
    public void categoryFragmenreplacedemClicked(Category category) {
        // TODO Auto-generated method stub
        SubCategoryViewModel viewModel = (SubCategoryViewModel) ViewModelManager.manager().newViewModel(SubCategoryActivity.clreplaced.getName());
        viewModel.cateId = category.cateId;
        viewModel.issubcategory_screen = true;
        viewModel.cateShortName = category.cateShortName;
        Route.route().nextController(MainActivity.this, viewModel, Route.WITHOUT_RESULTCODE);
    }

    /**
     * ******************************* refresh footerview and header view call back method *****************************************
     */
    @Override
    public void onFooterRefresh(PullToRefreshView view) {
        // TODO Auto-generated method stub
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        switch(currentPage) {
            // latest
            case 0:
                {
                    MainActivity.isFromRefreshData = false;
                    currentPageLatest += STEP_LOADIMAGE;
                    viewModel.start = currentPageLatest + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST);
                    isFirstTimeFetchDataLatest = true;
                }
                break;
            case 1:
                {
                    MainActivity.isFromRefreshDataRecommended = false;
                    currentPageRecommended += STEP_LOADIMAGE;
                    viewModel.start = currentPageRecommended + "";
                    Log.i("kyson", currentPageRecommended + "         jinin");
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETRECOMMENDEDLIST);
                    isFirstTimeFetchDataRecommended = true;
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void onHeaderRefresh(PullToRefreshView view) {
        // TODO Auto-generated method stub
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        switch(currentPage) {
            // latest
            case 0:
                {
                    MainActivity.isFromRefreshData = true;
                    currentPageLatest = 0;
                    viewModel.start = currentPageLatest + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST);
                    isFirstTimeFetchDataLatest = true;
                }
                break;
            case 1:
                {
                    MainActivity.isFromRefreshDataRecommended = true;
                    currentPageRecommended = 0;
                    viewModel.start = currentPageRecommended + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETRECOMMENDEDLIST);
                    isFirstTimeFetchDataRecommended = true;
                }
                break;
            default:
                break;
        }
    }

    public void latestNetWorkClick(View v) {
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        LatestFragment latestFragment = (LatestFragment) fragments.get(currentPage);
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            latestFragment.setGONE();
            viewModel.start = currentPageLatest + "";
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETLATESTLIST);
            isFirstTimeFetchDataLatest = false;
        } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
            latestFragment.setVISIBLE();
            isFirstTimeFetchDataLatest = true;
        }
    }

    public void recommendedNetWorkClick(View v) {
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        RecommendedFragment recommendedFragment = (RecommendedFragment) fragments.get(currentPage);
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            showProgress();
            recommendedFragment.setGONE();
            viewModel.start = currentPageRecommended + "";
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETRECOMMENDEDLIST);
            isFirstTimeFetchDataRecommended = false;
        } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
            recommendedFragment.setVISIBLE();
            isFirstTimeFetchDataRecommended = true;
        }
    }

    public void categoryNetWorkClick(View v) {
        MainViewModel viewModel = (MainViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        CategoryFragment categoryFragment = (CategoryFragment) fragments.get(currentPage);
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            showProgress();
            categoryFragment.setGONE();
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_GETCATEGORYLIST);
            isFirstTimeFetchDataCategory = false;
        } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
            categoryFragment.setVISIBLE();
            isFirstTimeFetchDataCategory = true;
        }
    }

    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {

        public void handleMessage(android.os.Message msg) {
            switch(msg.what) {
                case 0:
                    Toast.makeText(MainActivity.this, "清除缓存成功", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    };

    @SuppressLint("ServiceCast")
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        switch(arg2) {
            case 0:
                {
                    MobclickAgent.onEvent(this, "1001");
                    new Thread() {

                        public void run() {
                            WipeCache.shareInstance().clear();
                            handler.sendEmptyMessage(0);
                        }
                    }.start();
                }
                break;
            case 1:
                {
                    try {
                        MobclickAgent.onEvent(this, "1005");
                        startActivity(Intent.parseUri("http://sj.zol.com.cn/detail/58/57411.shtml", 0));
                    } catch (URISyntaxException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case 2:
                {
                    {
                        intent = new Intent();
                        intent.setClreplaced(MainActivity.this, AboutUsActivity.clreplaced);
                        startActivity(intent);
                    }
                }
                break;
            case 3:
                {
                    intent = new Intent();
                    intent.setClreplaced(MainActivity.this, FeedbackActivity.clreplaced);
                    startActivity(intent);
                }
                break;
            case 4:
                {
                    Intent intent = new Intent(this, MyService.clreplaced);
                    this.startService(intent);
                /*
			 * String fileString =
			 * WallWrapperApplication.getContext().getExternalFilesDir
			 * (Environment.DIRECTORY_DCIM).getPath(); File files = new
			 * File(fileString); if (files.isDirectory()) { int nums =
			 * files.listFiles().length; if (nums > 0) { for (int i = 0; i <
			 * nums; i++) { try { FileInputStream fis = new
			 * FileInputStream(files.listFiles()[0]); WallpaperManager wpm =
			 * (WallpaperManager) getSystemService(WALLPAPER_SERVICE);
			 * WindowManager wm = (WindowManager)
			 * getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
			 * 
			 * @SuppressWarnings("deprecation") int width =
			 * wm.getDefaultDisplay().getWidth();
			 * 
			 * @SuppressWarnings("deprecation") int height =
			 * wm.getDefaultDisplay().getHeight();
			 * wpm.suggestDesiredDimensions(width, height);
			 * 
			 * @SuppressWarnings("deprecation") BitmapDrawable pic = new
			 * BitmapDrawable(fis); Bitmap bitmap = pic.getBitmap(); bitmap =
			 * ThumbnailUtils.extractThumbnail(bitmap, width, height);
			 * WallpaperManager
			 * .getInstance(MainActivity.this).setBitmap(bitmap); } catch
			 * (FileNotFoundException e) { e.printStackTrace(); } catch
			 * (IOException e) { e.printStackTrace(); } } } }
			 */
                }
                break;
            case 5:
                {
                    Intent intent = new Intent(this, MyService.clreplaced);
                    this.startService(intent);
                }
                break;
            case 6:
                {
                    Intent intent = new Intent(this, MyService.clreplaced);
                    this.stopService(intent);
                }
                break;
            case 7:
                {
                    Intent intent = new Intent(this, MyService.clreplaced);
                    this.stopService(intent);
                }
                break;
            case 8:
                {
                }
                break;
        }
    }
}

10 View Complete Implementation : MainActivity.java
Copyright MIT License
Author : 6ag
public clreplaced MainActivity extends BaseActivity implements View.OnClickListener {

    private static final String TAG = "MainActivity";

    // 写入SD卡权限
    private static final int PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 10000;

    public static final int REQUEST_CODE_COLUMN = 10001;

    // 加载进度
    private ProgressDialog mDownloadDialog;

    // 服务器版本号
    private String serverVersion;

    // 新版本更新描述
    private String description;

    // 新版本apk下载地址
    private String apkUrl;

    // 左上角菜单
    private ImageButton mMenuButton;

    // 右上角搜索
    private ImageButton mSearchButton;

    // 栏目管理
    private ImageButton mNewsClreplacedAdd;

    // 标签
    private TabLayout mNewsTabLayout;

    // 列表主体
    private ViewPager mNewsViewPager;

    // 侧栏菜单
    // 侧栏
    private SlidingMenu mSlidingMenu;

    // 头像(包括头像和昵称)
    private View mPortraitView;

    // 头像
    private SimpleDraweeView mPortraitImageView;

    // 昵称
    private TextView mNicknameTextView;

    // 我的收藏
    private View mCollectionView;

    // 我的足迹
    private View mCommentView;

    // 清除缓存
    private View mClearCacheView;

    // 夜间模式
    private View mChangModeView;

    // 意见反馈
    private View mFeedbackView;

    // 推荐给好友
    private View mCommendView;

    // 关于我们
    private View mAboutView;

    // 已经选择
    private List<ColumnBean> mSelectedList = new ArrayList<>();

    // 可选项
    private List<ColumnBean> mOptionalList = new ArrayList<>();

    private List<NewsListFragment> mNewsListFragmentList = new ArrayList<>();

    private TabFragmentPagerAdapter mFragmentPageAdapter;

    /**
     * 快捷启动方法
     *
     * @param activity
     * @param articleListBean
     */
    public static void start(Activity activity, ArticleListBean articleListBean) {
        Intent intent = new Intent(activity, MainActivity.clreplaced);
        Bundle bundle = new Bundle();
        bundle.putSerializable("articleListBean_key", articleListBean);
        intent.putExtras(bundle);
        activity.startActivity(intent);
        activity.overridePendingTransition(R.anim.column_bottom, R.anim.column_bottom);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 修改状态栏颜色
        StatusBarUtils.initStatusBar(this, R.color.colorPrimary);
        setContentView(R.layout.activity_main);
        prepareUI();
        prepareMenu();
        // 加载广告数据
        AdManager.shared().loadAdList(mContext);
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                loadData();
                // 检查版本更新
                checkVersion();
                // 检查是否需要更新本地关键词库
                NewsDALManager.shared.shouldUpdateKeyboardList();
            }
        }, 100);
        // 判断是否是点击广告进入
        isAdClick();
    }

    @Override
    protected void onStart() {
        super.onStart();
        // 更新头像
        if (UserBean.isLogin()) {
            mPortraitImageView.setImageURI(UserBean.shared().getAvatarUrl());
            mNicknameTextView.setText(UserBean.shared().getNickname());
        } else {
            mPortraitImageView.setImageURI("");
            mNicknameTextView.setText("登录账号");
        }
    }

    /**
     * 是否是点击广告
     */
    private void isAdClick() {
        // 如果有数据说明是点击广告过来的
        Intent intent = getIntent();
        if (intent != null && intent.getSerializableExtra("articleListBean_key") != null) {
            ArticleListBean articleListBean = (ArticleListBean) intent.getSerializableExtra("articleListBean_key");
            // 是广告分类,并且是外链。则打开网页activity
            if (articleListBean.getClreplacedid().equals(AdManager.shared().clreplacedid) && articleListBean.getIsurl().equals("1")) {
                AdWebViewActivity.start(mContext, articleListBean.getreplacedleurl(), articleListBean.getreplacedle(), articleListBean.getreplacedlepic());
                return;
            }
            // 超过3张图才打开图集activity
            if (articleListBean.getMorepic().length > 3) {
                PhotoDetailActivity.start(mContext, articleListBean.getClreplacedid(), articleListBean.getId());
            } else {
                NewsDetailActivity.start(mContext, articleListBean.getClreplacedid(), articleListBean.getId());
            }
        }
    }

    /**
     * 准备侧滑菜单
     */
    private void prepareMenu() {
        mSlidingMenu = new SlidingMenu(mContext);
        mSlidingMenu.setMode(SlidingMenu.LEFT);
        mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        mSlidingMenu.setShadowWidth(0);
        mSlidingMenu.setBehindOffset((int) (SizeUtils.getScreenWidthPx(mContext) * 0.5));
        mSlidingMenu.setFadeDegree(0.0f);
        mSlidingMenu.setBehindScrollScale(0.0f);
        mSlidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        // 为侧滑菜单设置布局
        View view = View.inflate(mContext, R.layout.slidingmenu_profile, null);
        mSlidingMenu.setMenu(view);
        mPortraitView = view.findViewById(R.id.ll_slidingmenu_profile_portrait_layout);
        mPortraitImageView = (SimpleDraweeView) view.findViewById(R.id.sdv_slidingmenu_profile_portrait_image);
        mNicknameTextView = (TextView) view.findViewById(R.id.tv_slidingmenu_profile_nickname);
        mCollectionView = view.findViewById(R.id.rl_slidingmenu_profile_collection_layout);
        mCommentView = view.findViewById(R.id.rl_slidingmenu_profile_comment_layout);
        mClearCacheView = view.findViewById(R.id.rl_slidingmenu_profile_clear_cache_layout);
        mChangModeView = view.findViewById(R.id.rl_slidingmenu_profile_change_mode_layout);
        mFeedbackView = view.findViewById(R.id.rl_slidingmenu_profile_feekback_layout);
        mCommendView = view.findViewById(R.id.rl_slidingmenu_profile_commend_layout);
        mAboutView = view.findViewById(R.id.rl_slidingmenu_profile_aboutme_layout);
        mPortraitView.setOnClickListener(this);
        mCollectionView.setOnClickListener(this);
        mCommentView.setOnClickListener(this);
        mClearCacheView.setOnClickListener(this);
        mChangModeView.setOnClickListener(this);
        mFeedbackView.setOnClickListener(this);
        mCommendView.setOnClickListener(this);
        mAboutView.setOnClickListener(this);
    }

    /**
     * 准备UI
     */
    private void prepareUI() {
        mMenuButton = (ImageButton) findViewById(R.id.nav_main_left_menu);
        mSearchButton = (ImageButton) findViewById(R.id.nav_main_right_search);
        mNewsTabLayout = (TabLayout) findViewById(R.id.tl_news_tabLayout);
        mNewsViewPager = (ViewPager) findViewById(R.id.vp_news_viewPager);
        mNewsClreplacedAdd = (ImageButton) findViewById(R.id.ib_news_clreplaced_add);
        mMenuButton.setOnClickListener(this);
        mSearchButton.setOnClickListener(this);
        mNewsClreplacedAdd.setOnClickListener(this);
        // 配置viewPager
        setupViewPager();
    }

    /**
     * 配置ViewPager
     */
    private void setupViewPager() {
        mFragmentPageAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), mNewsListFragmentList, mSelectedList);
        mNewsViewPager.setAdapter(mFragmentPageAdapter);
        mNewsTabLayout.setupWithViewPager(mNewsViewPager);
        mNewsTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                mNewsViewPager.setCurrenreplacedem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                mNewsViewPager.setCurrenreplacedem(tab.getPosition());
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                mNewsViewPager.setCurrenreplacedem(tab.getPosition());
            }
        });
    }

    @Override
    public void onClick(final View v) {
        switch(v.getId()) {
            case // 左上角侧边栏
            R.id.nav_main_left_menu:
                if (!mSlidingMenu.isMenuShowing()) {
                    mSlidingMenu.toggle();
                }
                break;
            case // 右上角搜索
            R.id.nav_main_right_search:
                SearchActivity.start(mContext);
                break;
            case // 栏目管理
            R.id.ib_news_clreplaced_add:
                ColumnActivity.start(mContext, mSelectedList, mOptionalList);
                break;
            default:
                // 点击了侧滑视图里的控件
                if (mSlidingMenu.isMenuShowing()) {
                    mSlidingMenu.toggle();
                }
                // 延迟调用事件,让关闭侧滑动画结束
                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        onClickMenu(v);
                    }
                }, 500);
                break;
        }
    }

    /**
     * 点击了侧滑menu里的控件
     *
     * @param v
     */
    private void onClickMenu(View v) {
        switch(v.getId()) {
            case // 头像
            R.id.ll_slidingmenu_profile_portrait_layout:
                if (UserBean.isLogin()) {
                    UserInfoActivity.start(mContext);
                } else {
                    LoginActivity.start(mContext);
                }
                break;
            case // 收藏
            R.id.rl_slidingmenu_profile_collection_layout:
                if (UserBean.isLogin()) {
                    CollectionRecordActivity.start(mContext);
                } else {
                    LoginActivity.start(mContext);
                }
                break;
            case // 评论
            R.id.rl_slidingmenu_profile_comment_layout:
                if (UserBean.isLogin()) {
                    CommentRecordActivity.start(mContext);
                } else {
                    LoginActivity.start(mContext);
                }
                break;
            case // 清除缓存
            R.id.rl_slidingmenu_profile_clear_cache_layout:
                showClearCacheDialog();
                break;
            case // 夜间模式
            R.id.rl_slidingmenu_profile_change_mode_layout:
                break;
            case // 意见反馈
            R.id.rl_slidingmenu_profile_feekback_layout:
                FeedbackActivity.start(mContext);
                break;
            case // 推荐给好友
            R.id.rl_slidingmenu_profile_commend_layout:
                showShareApp();
                break;
            case // 关于我们
            R.id.rl_slidingmenu_profile_aboutme_layout:
                AboutUsActivity.start(mContext);
                break;
        }
    }

    /**
     * 分享app
     */
    private void showShareApp() {
        OnekeyShare oks = new OnekeyShare();
        // 关闭sso授权
        oks.disableSSOWhenAuthorize();
        // replacedle标题,印象笔记、邮箱、信息、微信、人人网、QQ和QQ空间使用
        oks.setreplacedle("六阿哥");
        // replacedleUrl是标题的网络链接,仅在Linked-in,QQ和QQ空间使用
        oks.setreplacedleUrl("https://www.6ag.cn");
        // text是分享文本,所有平台都需要这个字段
        oks.setText("六阿哥网是国内最大的以奇闻异事探索为主题的网站之一,为广大探索爱好者提供丰富的探索资讯内容。进入app下载界面...");
        // 分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测试新浪微博
        oks.setImageUrl(APIs.BASE_URL + "icon.png");
        // url仅在微信(包括好友和朋友圈)中使用
        oks.setUrl("https://www.6ag.cn");
        // site是分享此内容的网站名称,仅在QQ空间使用
        oks.setSite("六阿哥");
        // siteUrl是分享此内容的网站地址,仅在QQ空间使用
        oks.setSiteUrl("https://www.6ag.cn");
        // 启动分享GUI
        oks.show(mContext);
    }

    /**
     * 清除缓存前需要询问一下用户
     */
    private void showClearCacheDialog() {
        String cacheString = FileCacheUtils.getTotalCacheSize(mContext);
        android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(mContext);
        builder.setCancelable(true);
        builder.setreplacedle("您确定要清除缓存吗?一共有" + cacheString + "缓存");
        builder.setMessage("保留缓存可以节省您的流量哦!");
        builder.setPositiveButton("确定清除", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                clearCache();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.show();
    }

    /**
     * 清除缓存
     */
    private void clearCache() {
        // 清理新闻json数据 - 不清理json数据
        // NewsDALManager.shared.clearCache();
        // Fresco清除图片缓存
        ImagePipeline imagePipeline = Fresco.getImagePipeline();
        imagePipeline.clearCaches();
        // 清除缓存目录 - 清除所有缓存目录文件
        FileCacheUtils.clearAllCache(mContext);
        final KProgressHUD hud = ProgressHUD.show(mContext, "正在清理...");
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                hud.dismiss();
                ProgressHUD.showInfo(mContext, "清理缓存完成");
            }
        }, 2000);
    }

    /**
     * 加载数据
     */
    private void loadData() {
        // 加载栏目集合
        loadNewsColumnList();
    }

    /**
     * 从网络加载分类栏目数据
     */
    private void loadNewsColumnList() {
        ColumnBean.loadNewsColumnList(new ColumnBean.ColumnListCallback() {

            @Override
            public void onSuccess(List<ColumnBean> selectedList, List<ColumnBean> optionalList) {
                // 刷新栏目
                refreshColumn(selectedList, optionalList);
            }

            @Override
            public void onError(String tipString) {
                ProgressHUD.showInfo(mContext, tipString);
            }
        });
    }

    /**
     * 刷新栏目
     *
     * @param selectedList
     * @param optionalList
     */
    private void refreshColumn(List<ColumnBean> selectedList, List<ColumnBean> optionalList) {
        // 清空集合数据
        mSelectedList.clear();
        mOptionalList.clear();
        mNewsListFragmentList.clear();
        mSelectedList.addAll(selectedList);
        mOptionalList.addAll(optionalList);
        for (int i = 0; i < mSelectedList.size(); i++) {
            NewsListFragment newsListFragment = NewsListFragment.newInstance(mSelectedList.get(i).getClreplacedid());
            mNewsListFragmentList.add(newsListFragment);
        }
        // 重新加载ViewPager数据
        mFragmentPageAdapter.reloadData(mNewsListFragmentList, mSelectedList);
        mNewsViewPager.setCurrenreplacedem(0);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode) {
            case REQUEST_CODE_COLUMN:
                // 处理修改栏目顺序或数量后重新加载
                if (resultCode == RESULT_OK) {
                    refreshColumn((List<ColumnBean>) data.getSerializableExtra("selectedList_key"), (List<ColumnBean>) data.getSerializableExtra("optionalList_key"));
                }
                break;
        }
    }

    /**
     * 检查是否有新版本
     */
    private void checkVersion() {
        NetworkUtils.shared.get(APIs.UPDATE, new HashMap<String, String>(), new NetworkUtils.StringCallback() {

            @Override
            public void onError(Call call, Exception e, int id) {
                ProgressHUD.showInfo(mContext, "您的网络不给力");
            }

            @Override
            public void onResponse(String response, int id) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    if (jsonObject.getString("err_msg").equals("success")) {
                        JSONObject versionInfo = jsonObject.getJSONObject("data");
                        serverVersion = versionInfo.getString("version");
                        description = versionInfo.getString("description");
                        apkUrl = versionInfo.getString("url");
                        // 更新版本
                        showUpdateDialog();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    ProgressHUD.showInfo(mContext, "数据解析异常");
                }
            }
        });
    }

    /**
     * 弹出对话框更新app版本
     */
    protected void showUpdateDialog() {
        // 检查是否是新版本
        String currentVersion = App.app.getVersionName();
        if (currentVersion.equals(serverVersion)) {
            return;
        }
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setreplacedle("发现新版本:" + serverVersion);
        builder.setIcon(R.mipmap.ic_launcher);
        builder.setMessage(description);
        builder.setCancelable(false);
        builder.setPositiveButton("立即更新", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 判断是否有写入SD权限
                if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    // 申请权限
                    ActivityCompat.requestPermissions(mContext, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
                } else {
                    // 有写入权限直接下载apk
                    downloadAPK();
                }
            }
        });
        builder.setNegativeButton("取消", null);
        builder.show();
    }

    /**
     * 运行时权限请求回调结果
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch(requestCode) {
            case PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    downloadAPK();
                } else {
                    Toast.makeText(getApplicationContext(), "你没有文件写入权限", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }

    /**
     * 下载新版本
     */
    protected void downloadAPK() {
        // apk文件保存路径
        String apkPath = null;
        final String apkName = "liuage" + serverVersion + ".apk";
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            apkPath = Environment.getExternalStorageDirectory().getAbsolutePath();
        }
        if (apkPath == null) {
            ProgressHUD.showInfo(mContext, "您的手机没有SD卡");
            return;
        }
        // 弹出下载进度会话框
        showDownloadDialog();
        // 下载文件
        OkHttpUtils.get().url(apkUrl).build().execute(new FileCallBack(apkPath, apkName) {

            @Override
            public void inProgress(float progress, long total, int id) {
                // 更新下载进度
                mDownloadDialog.setProgress(Math.round(progress * 100));
            }

            @Override
            public void onError(Call call, Exception e, int id) {
                mDownloadDialog.dismiss();
                ProgressHUD.showInfo(mContext, "您的网络不给力哦");
            }

            @Override
            public void onResponse(File response, int id) {
                mDownloadDialog.dismiss();
                // 下载完成安装apk
                installAPK(response.getAbsolutePath());
            }
        });
    }

    /**
     * 弹出下载对话框
     */
    public void showDownloadDialog() {
        mDownloadDialog = new ProgressDialog(mContext);
        mDownloadDialog.setIcon(R.mipmap.ic_launcher);
        mDownloadDialog.setreplacedle("版本更新");
        mDownloadDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        mDownloadDialog.setMessage("正在玩命下载中......");
        mDownloadDialog.getWindow().setGravity(Gravity.CENTER);
        mDownloadDialog.setMax(100);
        mDownloadDialog.show();
    }

    /**
     * 安装下载的新版本apk
     *
     * @param apkPath apk存放路径
     */
    private void installAPK(String apkPath) {
        Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        intent.addCategory("android.intent.category.DEFAULT");
        intent.setDataAndType(Uri.parse("file://" + apkPath), "application/vnd.android.package-archive");
        startActivity(intent);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exit();
        }
        return true;
    }

    // 记录两次点击退出时的第一次有效点击时间
    private long time = 0;

    /**
     * 2秒内连续点击返回2次back才退出app
     */
    private void exit() {
        if (System.currentTimeMillis() - time > 2000) {
            time = System.currentTimeMillis();
            showToast("再次点击将退出");
        } else {
            removeAllActivity();
        }
    }
}

10 View Complete Implementation : MainActivity.java
Copyright MIT License
Author : wangcantian
// 初始化侧滑菜单
private void initSlideMenu() {
    setBehindContentView(createFrameLayout(FRAGMENT_LEFT_MANU_ID));
    SlidingMenu mSlidingMenu = getSlidingMenu();
    mSlidingMenu.setMode(SlidingMenu.LEFT);
    mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
    mSlidingMenu.setShadowDrawable(null);
    mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    mSlidingMenu.setFadeDegree(0.35f);
    mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
    mSlidingMenu.setBehindScrollScale(0.0f);
}

9 View Complete Implementation : ResponsiveUIActivity.java
Copyright Apache License 2.0
Author : jfeinstein10
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setreplacedle(R.string.responsive_ui);
    setContentView(R.layout.responsive_content_frame);
    // check if the content frame contains the menu frame
    if (findViewById(R.id.menu_frame) == null) {
        setBehindContentView(R.layout.menu_frame);
        getSlidingMenu().setSlidingEnabled(true);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        // show home as up so we can toggle
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    } else {
        // add a dummy view
        View v = new View(this);
        setBehindContentView(v);
        getSlidingMenu().setSlidingEnabled(false);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    }
    // set the Above View Fragment
    if (savedInstanceState != null)
        mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
    if (mContent == null)
        mContent = new BirdGridFragment(0);
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mContent).commit();
    // set the Behind View Fragment
    getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new BirdMenuFragment()).commit();
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindScrollScale(0.25f);
    sm.setFadeDegree(0.25f);
    // show the explanation dialog
    if (savedInstanceState == null)
        new AlertDialog.Builder(this).setreplacedle(R.string.what_is_this).setMessage(R.string.responsive_explanation).show();
}

9 View Complete Implementation : ResponsiveUIActivity.java
Copyright Apache License 2.0
Author : JoeSteven
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setreplacedle(R.string.responsive_ui);
    setContentView(R.layout.responsive_content_frame);
    // check if the content frame contains the menu frame
    if (findViewById(R.id.menu_frame) == null) {
        setBehindContentView(R.layout.menu_frame);
        getSlidingMenu().setSlidingEnabled(true);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        // show home as up so we can toggle
        getActionBar().setDisplayHomeAsUpEnabled(true);
    } else {
        // add a dummy view
        View v = new View(this);
        setBehindContentView(v);
        getSlidingMenu().setSlidingEnabled(false);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    }
    // set the Above View Fragment
    if (savedInstanceState != null)
        mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
    if (mContent == null)
        mContent = new BirdGridFragment(0);
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mContent).commit();
    // set the Behind View Fragment
    getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new BirdMenuFragment()).commit();
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindScrollScale(0.25f);
    sm.setFadeDegree(0.25f);
    // show the explanation dialog
    if (savedInstanceState == null)
        new AlertDialog.Builder(this).setreplacedle(R.string.what_is_this).setMessage(R.string.responsive_explanation).show();
}

9 View Complete Implementation : SubCategoryActivity.java
Copyright GNU General Public License v2.0
Author : kysonzhu
@SuppressLint("NewApi")
public clreplaced SubCategoryActivity extends WallWrapperBaseFragmentActivity implements OnPageChangeListener, OnClickListener, OnHeaderRefreshListener, OnFooterRefreshListener, OnItemClickListener {

    private ViewPager pager;

    private ArrayList<Fragment> fragments;

    private ViewPagerAdapter mAdapter;

    private TextView subcategory_replacedle_textview;

    public SlidingMenu menu;

    private Intent intent;

    private RadioButton recommendedButton;

    private RadioButton latestButton;

    private RadioButton hottestButton;

    private ImageView subcategoryBackImage;

    private ImageView subcategoryScreenImage;

    Boolean isFirstTimeFetchDataSubLatest = true;

    Boolean isFirstTimeFetchDataSubRecommended = true;

    Boolean isFirstTimeFetchDataHottest = true;

    private int currentPageSubLatest;

    private int currentPageSubRecommended;

    private int currentPageHottest;

    public static final int STEP_LOADIMAGE = 30;

    private static boolean isFromRefreshDataSubLatest;

    private static boolean isFromRefreshDataSubRecommended;

    private static boolean isFromRefreshDataHottest;

    private ArrayList<Group> latestGroups;

    private ArrayList<Group> recommendedGroups;

    private ArrayList<Group> hottestGroups;

    private int currentPage;

    private String cateId;

    private ListView menuListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        currentPageSubLatest = 0;
        currentPageSubRecommended = 0;
        currentPageHottest = 0;
        currentPage = 0;
        isFromRefreshDataSubLatest = true;
        isFromRefreshDataSubRecommended = true;
        isFromRefreshDataHottest = true;
        latestGroups = new ArrayList<Group>();
        recommendedGroups = new ArrayList<Group>();
        hottestGroups = new ArrayList<Group>();
        setContentView(R.layout.activity_subcategory);
        subcategory_replacedle_textview = (TextView) findViewById(R.id.subcategory_replacedle_textview);
        subcategoryBackImage = (ImageView) findViewById(R.id.subcategory_back_image);
        subcategoryBackImage.setOnClickListener(this);
        pager = (ViewPager) findViewById(R.id.pager);
        pager.setOffscreenPageLimit(2);
        fragments = new ArrayList<Fragment>();
        SubLatestFragment sublatestFragment = new SubLatestFragment();
        SubRecommendedFragment subrecommendedFragment = new SubRecommendedFragment();
        HottestFragment hottestfragment = new HottestFragment();
        fragments.add(sublatestFragment);
        fragments.add(subrecommendedFragment);
        fragments.add(hottestfragment);
        latestButton = (RadioButton) findViewById(R.id.radio_sub_latest);
        latestButton.setOnClickListener(this);
        recommendedButton = (RadioButton) findViewById(R.id.radio_sub_recommended);
        recommendedButton.setOnClickListener(this);
        hottestButton = (RadioButton) findViewById(R.id.radio_hottest);
        hottestButton.setOnClickListener(this);
        mAdapter = new ViewPagerAdapter(getSupportFragmentManager(), fragments);
        pager.setAdapter(mAdapter);
        menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.shadow_width);
        menu.setShadowDrawable(R.drawable.slidingmenu_shadow);
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setMenu(R.layout.layout_menu);
        menu.setMode(SlidingMenu.LEFT);
        menu.setMenu(R.layout.layout_menu);
        long screenWidth = WallWrapperEnvConfigure.getScreenWidth();
        menu.setBehindWidth((int) (screenWidth * 0.7));
        pager.setOnPageChangeListener(this);
        menuListView = (ListView) menu.getMenu().findViewById(R.id.menu_listview);
        menuListView.setAdapter(new MenuListViewAdapter(this));
        menuListView.setOnItemClickListener(this);
    }

    @Override
    public void refreshData(String method) {
        super.refreshData(method);
        dismissProgress();
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST)) {
            SubRecommendedFragment fragment = (SubRecommendedFragment) fragments.get(1);
            fragment.hideHeaderViewAndFooterView();
            WallWrapperViewModel viewModel = (WallWrapperViewModel) this.baseViewModel;
            ArrayList<Group> groups = viewModel.groups;
            if (null != groups) {
                if (SubCategoryActivity.isFromRefreshDataSubRecommended) {
                    recommendedGroups.clear();
                    recommendedGroups.addAll(groups);
                    SharedPreferences preferences = this.getSharedPreferences("ZAN_SUM", Context.MODE_PRIVATE);
                    for (Group group : recommendedGroups) {
                        String you_zan = preferences.getString(group.gId, "gid");
                        if (!"gid".equals(you_zan)) {
                            group.voteGood = Integer.parseInt(group.voteGood) + 1 + "";
                        }
                    }
                    RecommendedFragmentAdapter adapter = new RecommendedFragmentAdapter(this, recommendedGroups);
                    fragment.setAdapter(adapter);
                } else {
                    // is load more
                    if (recommendedGroups.size() >= 30) {
                        recommendedGroups.addAll(groups);
                    } else {
                        recommendedGroups.clear();
                        recommendedGroups.addAll(groups);
                    }
                    // recommendedGroups.addAll(groups);
                    RecommendedFragmentAdapter adapter = fragment.getAdapter();
                    // fragment.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                // adapter.notifyAll();
                }
                fragment.setGONE();
            }
        } else if (method.equals(WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST)) {
            SubLatestFragment fragment = (SubLatestFragment) fragments.get(0);
            WallWrapperViewModel viewModel = (WallWrapperViewModel) this.baseViewModel;
            fragment.hideHeaderViewAndFooterView();
            ArrayList<Group> groups = viewModel.groups;
            if (null != groups) {
                // is refresh data
                if (SubCategoryActivity.isFromRefreshDataSubLatest) {
                    latestGroups.clear();
                    latestGroups.addAll(groups);
                    LatestFragmentAdapter adapter = new LatestFragmentAdapter(this, latestGroups);
                    fragment.setAdapter(adapter);
                } else {
                    // is load more
                    if (latestGroups.size() >= 30) {
                        latestGroups.addAll(groups);
                    } else {
                        latestGroups.clear();
                        latestGroups.addAll(groups);
                    }
                    LatestFragmentAdapter adapter = fragment.getAdapter();
                    // fragment.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                // adapter.notifyAll();
                }
                fragment.setGONE();
            }
        } else if (method.equals(WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST)) {
            HottestFragment fragment = (HottestFragment) fragments.get(2);
            WallWrapperViewModel viewModel = (WallWrapperViewModel) this.baseViewModel;
            fragment.hideHeaderViewAndFooterView();
            ArrayList<Group> groups = viewModel.groups;
            if (null != groups) {
                // is refresh data
                if (SubCategoryActivity.isFromRefreshDataHottest) {
                    hottestGroups.clear();
                    hottestGroups.addAll(groups);
                    HottestFragmentAdapter adapter = new HottestFragmentAdapter(this, hottestGroups);
                    fragment.setAdapter(adapter);
                } else {
                    // is load more
                    if (hottestGroups.size() >= 30) {
                        hottestGroups.addAll(groups);
                    } else {
                        hottestGroups.clear();
                        hottestGroups.addAll(groups);
                    }
                    // hottestGroups.addAll(groups);
                    HottestFragmentAdapter adapter = fragment.getAdapter();
                    // fragment.setAdapter(adapter);
                    adapter.notifyDataSetChanged();
                // adapter.notifyAll();
                }
                fragment.setGONE();
            }
        }
    }

    @Override
    public void alreadyBindBaseViewModel() {
        super.alreadyBindBaseViewModel();
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        cateId = viewModel.cateId;
        boolean issubcategory_screen = viewModel.issubcategory_screen;
        Log.i("kyson", issubcategory_screen + "  第一次");
        subcategoryScreenImage = (ImageView) findViewById(R.id.subcategory_screen_image);
        if (issubcategory_screen) {
            subcategoryScreenImage.setVisibility(View.VISIBLE);
            subcategoryScreenImage.setOnClickListener(this);
        } else {
            subcategoryScreenImage.setVisibility(View.INVISIBLE);
            subcategoryScreenImage.setClickable(false);
        }
        subcategory_replacedle_textview.setText(viewModel.cateShortName);
        this.setCurrentPage(0);
    }

    public void setCurrentPage(int position) {
        pager.setCurrenreplacedem(position);
        currentPage = position;
        onPageSelected(position);
    }

    private void highligthButton(int index) {
        switch(index) {
            case 0:
                {
                    latestButton.setChecked(true);
                    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                }
                break;
            case 1:
                {
                    recommendedButton.setChecked(true);
                    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                }
                break;
            case 2:
                {
                    hottestButton.setChecked(true);
                    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void onPageSelected(int position) {
        currentPage = position;
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        if (null == viewModel)
            return;
        this.highligthButton(position);
        if (position == 0) {
            if (isFirstTimeFetchDataSubLatest) {
                int status = NetworkStatus.networkStatus();
                if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
                    showProgress();
                    viewModel.cateId = cateId;
                    viewModel.start = currentPageSubLatest + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST);
                    isFirstTimeFetchDataSubLatest = false;
                } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
                    SubLatestFragment subLatestFragment = (SubLatestFragment) fragments.get(position);
                    subLatestFragment.showNoNetworkView(true);
                    isFirstTimeFetchDataSubLatest = true;
                }
            // viewModel.cateId = cateId;
            // viewModel.start = currentPageSubLatest + "";
            // doTask(viewModel,
            // WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST);
            // isFirstTimeFetchDataSubLatest = false;
            }
        } else if (position == 1) {
            if (isFirstTimeFetchDataSubRecommended) {
                int status = NetworkStatus.networkStatus();
                if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
                    showProgress();
                    viewModel.cateId = cateId;
                    viewModel.start = currentPageSubRecommended + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST);
                    isFirstTimeFetchDataSubRecommended = false;
                } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
                    SubRecommendedFragment subRecommendedFragment = (SubRecommendedFragment) fragments.get(position);
                    subRecommendedFragment.showNoNetworkView(true);
                    isFirstTimeFetchDataSubRecommended = true;
                }
            // viewModel.cateId = cateId;
            // viewModel.start = currentPageSubRecommended + "";
            // doTask(viewModel,
            // WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST);
            // isFirstTimeFetchDataSubRecommended = false;
            }
        } else {
            if (isFirstTimeFetchDataHottest) {
                int status = NetworkStatus.networkStatus();
                if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
                    showProgress();
                    viewModel.cateId = cateId;
                    viewModel.start = currentPageHottest + "";
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST);
                    isFirstTimeFetchDataHottest = false;
                } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
                    HottestFragment hottestFragment = (HottestFragment) fragments.get(position);
                    hottestFragment.showNoNetworkView(true);
                    isFirstTimeFetchDataHottest = true;
                }
            // viewModel.cateId = cateId;
            // viewModel.start = currentPageHottest + "";
            // doTask(viewModel,
            // WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST);
            // isFirstTimeFetchDataHottest = false;
            }
        }
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
    }

    @Override
    public void onClick(View view) {
        switch(view.getId()) {
            case R.id.radio_sub_latest:
                {
                    SubCategoryActivity.this.setCurrentPage(0);
                }
                break;
            case R.id.radio_sub_recommended:
                {
                    SubCategoryActivity.this.setCurrentPage(1);
                }
                break;
            case R.id.radio_hottest:
                {
                    SubCategoryActivity.this.setCurrentPage(2);
                }
                break;
            case R.id.subcategory_back_image:
                this.finish();
                break;
            case R.id.subcategory_screen_image:
                intent = new Intent();
                intent.putExtra("cateId", cateId);
                SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
                intent.putExtra("cateShortName", viewModel.cateShortName);
                intent.setClreplaced(SubCategoryActivity.this, SecondaryCategorySelectedActivity.clreplaced);
                startActivity(intent);
                break;
        }
    }

    @Override
    public void requestFailedHandle(String method, int errorCode, String errorMsg) {
        super.requestFailedHandle(method, errorCode, errorMsg);
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST)) {
            if (!isFromRefreshDataSubLatest) {
                currentPageSubLatest -= STEP_LOADIMAGE;
            }
            SubLatestFragment fragment = (SubLatestFragment) fragments.get(0);
            fragment.hideHeaderViewAndFooterView();
        }
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST)) {
            if (!isFromRefreshDataSubRecommended) {
                currentPageSubRecommended -= STEP_LOADIMAGE;
            }
            SubRecommendedFragment fragment = (SubRecommendedFragment) fragments.get(1);
            fragment.hideHeaderViewAndFooterView();
        }
        if (method.equals(WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST)) {
            if (!isFromRefreshDataHottest) {
                currentPageHottest -= STEP_LOADIMAGE;
            }
            HottestFragment fragment = (HottestFragment) fragments.get(2);
            fragment.hideHeaderViewAndFooterView();
        }
        Log.i("kyson", "errorMsg" + errorMsg);
        if (1001 == errorCode) {
            Toast.makeText(SubCategoryActivity.this, "无结果", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(SubCategoryActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
        }
        dismissProgress();
    // this.finish();
    }

    @Override
    public void onFooterRefresh(PullToRefreshView view) {
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        switch(currentPage) {
            // latest
            case 0:
                {
                    if (latestGroups.size() >= 30) {
                        currentPageSubLatest += STEP_LOADIMAGE;
                    } else {
                        currentPageSubLatest = 0;
                    }
                    SubCategoryActivity.isFromRefreshDataSubLatest = false;
                    viewModel.start = currentPageSubLatest + "";
                    viewModel.cateId = cateId;
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST);
                    isFirstTimeFetchDataSubLatest = true;
                }
                break;
            case 1:
                {
                    SubCategoryActivity.isFromRefreshDataSubRecommended = false;
                    if (recommendedGroups.size() >= 30) {
                        currentPageSubRecommended += STEP_LOADIMAGE;
                    } else {
                        currentPageSubRecommended = 0;
                    }
                    // currentPageSubRecommended += STEP_LOADIMAGE;
                    viewModel.start = currentPageSubRecommended + "";
                    viewModel.cateId = cateId;
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST);
                    isFirstTimeFetchDataSubRecommended = true;
                }
                break;
            case 2:
                {
                    SubCategoryActivity.isFromRefreshDataHottest = false;
                    if (hottestGroups.size() >= 30) {
                        currentPageHottest += STEP_LOADIMAGE;
                    } else {
                        currentPageHottest = 0;
                    }
                    // currentPageHottest += STEP_LOADIMAGE;
                    viewModel.start = currentPageHottest + "";
                    viewModel.cateId = cateId;
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST);
                    isFirstTimeFetchDataHottest = true;
                }
                break;
            default:
                break;
        }
    }

    @Override
    public void onHeaderRefresh(PullToRefreshView view) {
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        switch(currentPage) {
            // latest
            case 0:
                {
                    SubCategoryActivity.isFromRefreshDataSubLatest = true;
                    currentPageSubLatest = 0;
                    viewModel.start = currentPageSubLatest + "";
                    viewModel.cateId = cateId;
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST);
                    isFirstTimeFetchDataSubLatest = true;
                }
                break;
            case 1:
                {
                    SubCategoryActivity.isFromRefreshDataSubRecommended = true;
                    currentPageSubRecommended = 0;
                    viewModel.start = currentPageSubRecommended + "";
                    viewModel.cateId = cateId;
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST);
                    isFirstTimeFetchDataSubRecommended = true;
                }
                break;
            case 2:
                {
                    SubCategoryActivity.isFromRefreshDataHottest = true;
                    currentPageHottest = 0;
                    viewModel.start = currentPageHottest + "";
                    viewModel.cateId = cateId;
                    doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST);
                    isFirstTimeFetchDataHottest = true;
                }
                break;
            default:
                break;
        }
    }

    public void subLatestNetWorkClick(View v) {
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        SubLatestFragment subLatestFragment = (SubLatestFragment) fragments.get(currentPage);
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            subLatestFragment.setGONE();
            viewModel.cateId = cateId;
            viewModel.start = currentPageSubLatest + "";
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETLATESTLIST);
            isFirstTimeFetchDataSubLatest = false;
        } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
            subLatestFragment.setVISIBLE();
            isFirstTimeFetchDataSubLatest = true;
        }
    }

    public void subRecommendedNetWorkClick(View v) {
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        SubRecommendedFragment subRecommendedFragment = (SubRecommendedFragment) fragments.get(currentPage);
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            subRecommendedFragment.setGONE();
            viewModel.cateId = cateId;
            viewModel.start = currentPageSubRecommended + "";
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETRECOMMENDEDLIST);
            isFirstTimeFetchDataSubRecommended = false;
        } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
            subRecommendedFragment.setVISIBLE();
            isFirstTimeFetchDataSubRecommended = true;
        }
    }

    public void hottestNetWorkClick(View v) {
        SubCategoryViewModel viewModel = (SubCategoryViewModel) this.baseViewModel;
        int status = NetworkStatus.networkStatus();
        HottestFragment hottestFragment = (HottestFragment) fragments.get(currentPage);
        if (status == NetworkStatus.NETWORK_STATUS_REACHABLE) {
            hottestFragment.setGONE();
            viewModel.cateId = cateId;
            viewModel.start = currentPageHottest + "";
            doTask(viewModel, WallWrapperServiceMediator.SERVICENAME_SUBCATEGORY_GETHOTTESTLIST);
            isFirstTimeFetchDataHottest = false;
        } else if (status == NetworkStatus.NETWORK_STATUS_NOTREACHABLE) {
            hottestFragment.setVISIBLE();
            isFirstTimeFetchDataHottest = true;
        }
    }

    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {

        public void handleMessage(android.os.Message msg) {
            switch(msg.what) {
                case 0:
                    Toast.makeText(SubCategoryActivity.this, "清除缓存成功", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    };

    @SuppressLint("ServiceCast")
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        switch(arg2) {
            case 0:
                {
                    MobclickAgent.onEvent(this, "1001");
                    new Thread() {

                        public void run() {
                            WipeCache.shareInstance().clear();
                            handler.sendEmptyMessage(0);
                        }
                    }.start();
                }
                break;
            case 1:
                {
                    try {
                        MobclickAgent.onEvent(this, "1005");
                        startActivity(Intent.parseUri("http://sj.zol.com.cn/detail/58/57411.shtml", 0));
                    } catch (URISyntaxException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case 2:
                {
                    {
                        intent = new Intent();
                        intent.setClreplaced(SubCategoryActivity.this, AboutUsActivity.clreplaced);
                        startActivity(intent);
                    }
                }
                break;
            case 3:
                {
                    intent = new Intent();
                    intent.setClreplaced(SubCategoryActivity.this, FeedbackActivity.clreplaced);
                    startActivity(intent);
                }
                break;
            case 4:
                {
                    Intent intent = new Intent(this, MyService.clreplaced);
                    this.startService(intent);
                /*String fileString = WallWrapperApplication.getContext().getExternalFilesDir(Environment.DIRECTORY_DCIM).getPath();
			File files = new File(fileString);
			if (files.isDirectory()) {
				int nums = files.listFiles().length;
				if (nums > 0) {
					for (int i = 0; i < nums; i++) {
						try {
							FileInputStream fis = new FileInputStream(files.listFiles()[0]);
							WallpaperManager wpm = (WallpaperManager) getSystemService(WALLPAPER_SERVICE);
							WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
							@SuppressWarnings("deprecation")
							int width = wm.getDefaultDisplay().getWidth();
							@SuppressWarnings("deprecation")
							int height = wm.getDefaultDisplay().getHeight();
							wpm.suggestDesiredDimensions(width, height);
							@SuppressWarnings("deprecation")
							BitmapDrawable pic = new BitmapDrawable(fis);
							Bitmap bitmap = pic.getBitmap();
							bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height);
							WallpaperManager.getInstance(MainActivity.this).setBitmap(bitmap);
						} catch (FileNotFoundException e) {
							e.printStackTrace();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}
			}*/
                }
                break;
            case 5:
                {
                    Intent intent = new Intent(this, MyService.clreplaced);
                    this.stopService(intent);
                }
                break;
        }
    }
}

9 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v2.0
Author : PavelKorolev
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    configureInitialSettings();
    if ((!AuthorizationInfoManager.isAuthorizedOnVk() || !AuthorizationInfoManager.isAuthorizedOnLastfm()) && !AuthorizationInfoManager.isAuthSkipped()) {
        Intent intent = new Intent(this, AuthActivity.clreplaced);
        intent.putExtra(Constants.FIRST_START, true);
        startActivity(intent);
        finish();
        return;
    }
    setContentView(R.layout.main);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setreplacedle(R.string.app_name);
    actionBar.setDisplayShowreplacedleEnabled(true);
    AppRater.app_launched(this);
    ChangeLog cl = new DarkThemeChangeLog(this);
    String language = Locale.getDefault().getLanguage();
    LLog.log(language);
    if (!language.equals("pl") && !language.equals("uk")) {
        if (cl.isFirstRun()) {
            cl.getFullLogDialog().show();
        }
    }
    if (findViewById(R.id.tablet_layout) != null) {
        playlisreplacedemsAdapter = new PlaylisreplacedemsAdapter(MainActivity.this);
        if (findViewById(R.id.menu_frame) == null) {
            landscapeTablet = false;
            setBehindContentView(R.layout.menu_frame);
            getSlidingMenu().setSlidingEnabled(true);
            getSlidingMenu().setMode(SlidingMenu.LEFT);
            getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
            actionBar.setDisplayHomeAsUpEnabled(true);
        } else {
            View v = new View(this);
            setBehindContentView(v);
            getSlidingMenu().setSlidingEnabled(false);
            getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
            landscapeTablet = true;
        }
        playbackControlFragment = new PlaybackControlFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.playback_controls_frame, playbackControlFragment).commit();
        if (tabletFragment == null) {
            tabletFragment = new TabletFragment();
        }
        getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, tabletFragment).commit();
        modeListFragment = new ModeListFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, modeListFragment).commit();
        SlidingMenu sm = getSlidingMenu();
        sm.setShadowWidthRes(R.dimen.shadow_width);
        sm.setBehindWidthRes(R.dimen.behind_width);
        setSlidingActionBarEnabled(false);
        sm.setShadowDrawable(R.drawable.shadow);
        sm.setBehindScrollScale(0.25f);
        sm.setFadeDegree(0.25f);
    } else {
        handsetFragment = (HandsetFragment) getSupportFragmentManager().findFragmentById(R.id.handset_fragment);
        View v = new View(this);
        setBehindContentView(v);
        getSlidingMenu().setSlidingEnabled(false);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    }
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    startMusicService();
// ViewServer.get(this).addWindow(this);
}

8 View Complete Implementation : BaseActivity.java
Copyright Apache License 2.0
Author : jfeinstein10
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setreplacedle(mreplacedleRes);
    // set the Behind View
    setBehindContentView(R.layout.menu_frame);
    if (savedInstanceState == null) {
        FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
        mFrag = new SampleListFragment();
        t.replace(R.id.menu_frame, mFrag);
        t.commit();
    } else {
        mFrag = (ListFragment) this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
    }
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setFadeDegree(0.35f);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

8 View Complete Implementation : BaseActivity.java
Copyright Apache License 2.0
Author : JoeSteven
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setreplacedle(mreplacedleRes);
    // set the Behind View
    setBehindContentView(R.layout.menu_frame);
    if (savedInstanceState == null) {
        FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
        mFrag = new SampleListFragment();
        t.replace(R.id.menu_frame, mFrag);
        t.commit();
    } else {
        mFrag = (ListFragment) this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
    }
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setFadeDegree(0.35f);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

7 View Complete Implementation : SlidingMenuSampleActivity.java
Copyright Apache License 2.0
Author : android-opensource-library-56
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sliding_menu_sample);
    final SlidingMenu menu = new SlidingMenu(this);
    menu.setMode(SlidingMenu.LEFT);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setBehindWidth(getResources().getDimensionPixelSize(R.dimen.menu_width));
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    menu.setMenu(R.layout.sliding_menu);
    menu.setOnOpenedListener(new OnOpenedListener() {

        @Override
        public void onOpened() {
        // メニューが開かれた時に呼び出される
        }
    });
    menu.setOnClosedListener(new OnClosedListener() {

        @Override
        public void onClosed() {
        // メニューが閉じた時に呼び出される
        }
    });
    initializeMenuLayout(menu);
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            menu.showMenu(true);
        }
    }, 4000);
}

6 View Complete Implementation : ActivityMainSliding.java
Copyright Apache License 2.0
Author : BigAppOS
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EventBus.getDefault().register(this);
    if (new SpTool(this, SpTool.SP_SETTING).getBoolean("moon", false)) {
        BaseApplication.sDefaultImageDrawable = R.drawable.z_iv_default_y;
        setTheme(R.style.ActivityThemeMoon);
    } else {
        BaseApplication.sDefaultImageDrawable = R.drawable.z_iv_default;
        setTheme(R.style.ActivityTheme);
    }
    // set the Above View
    if (savedInstanceState != null) {
        mFragmentMainHome = (FragmentMainHome) getSupportFragmentManager().getFragment(savedInstanceState, "mFragmentMainHome");
    }
    if (mFragmentMainHome == null) {
        mFragmentMainHome = new FragmentMainHome();
        mFragmentMainHome.setArguments(getIntent().getExtras());
    }
    setContentView(R.layout.activity_main_sliding);
    getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mFragmentMainHome).commit();
    // set the Behind View
    setBehindContentView(R.layout.v_layout_sliding_menu);
    if (savedInstanceState != null) {
        mFragmentSlidingMenu = (FragmentSlidingMenu) this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
    }
    if (mFragmentSlidingMenu == null) {
        mFragmentSlidingMenu = new FragmentSlidingMenu();
        getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, mFragmentSlidingMenu).commit();
    }
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.slidingmenu_shadow_width);
    sm.setShadowDrawable(R.drawable.v_sliding_menu_shadow);
    sm.setBehindOffset(ScreenTools.getScreenParams(this).width * 3 / 10);
    sm.setFadeDegree(0.35f);
    // 设置触摸方式,必须为 TOUCHMODE_FULLSCREEN(全屏可触摸),TOUCHMODE_MARGIN(边缘可触摸),默认 48dp, TOUCHMODE_NONE(不可触摸)三者之一
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
    // 动画效果
    sm.setBehindScrollScale(0.0f);
    sm.setBackgroundColor(Color.parseColor("#252525"));
    sm.setBehindCanvasTransformer(getTransformer(1));
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

6 View Complete Implementation : BaseActivity.java
Copyright Apache License 2.0
Author : jackvt93
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setreplacedle(mreplacedleRes);
    setContentView(R.layout.blank_layout);
    setBehindContentView(R.layout.blank_layout);
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setBehindWidth(500);
    sm.setFadeDegree(0.35f);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_replacedLE | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME);
    actionBar.show();
}

6 View Complete Implementation : BaseActivity.java
Copyright Apache License 2.0
Author : r17171709
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setreplacedle(mreplacedleRes);
    // set the Behind View
    setBehindContentView(R.layout.menu_frame);
    if (savedInstanceState == null) {
        FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
        mFrag = new SampleListFragment();
        t.replace(R.id.menu_frame, mFrag);
        t.commit();
    } else {
        mFrag = (ListFragment) this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
    }
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setFadeDegree(0.35f);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    // ��Ҫ������ӵ�
    sm.setBehindCanvasTransformer(new CanvasTransformer() {

        @Override
        public void transformCanvas(Canvas canvas, float percentOpen) {
            // TODO Auto-generated method stub
            float scale = (float) (percentOpen * 0.25 + 0.75);
            canvas.scale(scale, scale, -canvas.getWidth(), canvas.getHeight() / 2);
        }
    });
    sm.setAboveCanvasTransformer(new CanvasTransformer() {

        @Override
        public void transformCanvas(Canvas canvas, float percentOpen) {
            // TODO Auto-generated method stub
            float scale = (float) (1 - percentOpen * 0.25);
            canvas.scale(scale, scale, 0, canvas.getHeight() / 2);
        }
    });
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

5 View Complete Implementation : LifeCount.java
Copyright Apache License 2.0
Author : brstf
/**
 * Create the sliding menus for this activity. If savedInstanceState is not
 * null, the menu fragment can simply be retrieved from the fragment
 * manager.
 *
 * @param savedInstanceState
 *            If the activity is being re-initialized after previously being
 *            shut down then this Bundle contains the data it most recently
 *            supplied in onSaveInstanceState(Bundle). Note: Otherwise it is
 *            null.
 */
private void createSlidingMenus() {
    SlidingMenu menu = getSlidingMenu();
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setFadeDegree(0.35f);
    menu.setMenu(R.layout.sliding_menu_frame);
    menu.setBehindOffsetRes(R.dimen.sliding_menu_offset);
    menu.setShadowDrawable(R.drawable.sliding_menu_shadow);
    menu.setShadowWidthRes(R.dimen.sliding_menu_shadow_width);
    menu.setMode(SlidingMenu.LEFT_RIGHT);
    menu.setSecondaryShadowDrawable(R.drawable.sliding_menu_shadow_right);
    menu.setOnClosedListener(new OnClosedListener() {

        @Override
        public void onClosed() {
            closeOptions();
        }
    });
    Fragment optionsLeft = getFragmentManager().findFragmentByTag("LEFT_OPTIONS");
    Fragment optionsRight = getFragmentManager().findFragmentByTag("RIGHT_OPTIONS");
    mLogFragRight = (SlidingMenuLogListFragment) getFragmentManager().findFragmentByTag("RIGHT");
    mLogFragLeft = (SlidingMenuLogListFragment) getFragmentManager().findFragmentByTag("LEFT");
    FragmentTransaction ft;
    // Only create new fragments if they don't exist
    if (mLogFragRight == null || mLogFragLeft == null) {
        mLogFragRight = new SlidingMenuLogListFragment();
        mLogFragLeft = new SlidingMenuLogListFragment();
        ft = getFragmentManager().beginTransaction();
        ft = ft.replace(R.id.sliding_menu_frame2, mLogFragRight, "RIGHT");
        ft = ft.replace(R.id.sliding_menu_frame, mLogFragLeft, "LEFT");
        ft.commit();
    }
    ft = getFragmentManager().beginTransaction();
    mLogFragRight.setControllers(p1Controller, p2Controller);
    mLogFragLeft.setControllers(p1Controller, p2Controller);
    // Restore the options fragments if they exist
    if (optionsRight != null) {
        ft = ft.replace(R.id.sliding_menu_frame2, optionsRight, "RIGHT_OPTIONS");
    }
    if (optionsLeft != null) {
        ft = ft.replace(R.id.sliding_menu_frame, optionsLeft, "LEFT_OPTIONS");
    }
    // If there are any changes to be done, commit them
    if (!ft.isEmpty()) {
        ft.commit();
    }
    getFragmentManager().executePendingTransactions();
    // set the fragments to be inverted as necessary
    mLogFragRight.setUpperInverted(mPrefs.getBoolean(getString(R.string.key_invert), true));
    mLogFragLeft.setUpperInverted(mPrefs.getBoolean(getString(R.string.key_invert), true));
}

5 View Complete Implementation : MainActivity.java
Copyright GNU General Public License v2.0
Author : ikantech
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mHelper = new SlidingActivityHelper(this);
    mHelper.onCreate(savedInstanceState);
    mContent = null;
    if (savedInstanceState != null)
        mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
    // if (mContent == null)
    // mContent = new ColorFragment(R.color.red);
    // set the Above View
    setContentView(R.layout.side_menu_content_frame);
    // getSupportFragmentManager().beginTransaction()
    // .replace(R.id.content_frame, mContent).commit();
    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setFadeDegree(0.35f);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    sm.setMode(mMenuMode);
    switch(mMenuMode) {
        case SlidingMenu.LEFT:
            setupLeftMenu();
            break;
        case SlidingMenu.RIGHT:
            setupRightMenu();
            break;
        case SlidingMenu.LEFT_RIGHT:
            setupSideMenu();
            break;
        default:
            break;
    }
    if (mLeftMenu != null && mRightMenu != null) {
        mLeftMenu.setMenuStateChangeListener(new OnMenuStateChangeListener() {

            @Override
            public void onSelectionChanged(int section, int position) {
                // TODO Auto-generated method stub
                mRightMenu.setSection(section, position);
            }

            @Override
            public void onScrollChanged(int scrollX, int scrollY) {
                // TODO Auto-generated method stub
                mRightMenu.setScroll(scrollX, scrollY);
            }
        });
        mRightMenu.setMenuStateChangeListener(new OnMenuStateChangeListener() {

            @Override
            public void onSelectionChanged(int section, int position) {
                // TODO Auto-generated method stub
                mLeftMenu.setSection(section, position);
            }

            @Override
            public void onScrollChanged(int scrollX, int scrollY) {
                // TODO Auto-generated method stub
                mLeftMenu.setScroll(scrollX, scrollY);
            }
        });
    }
    YiIMConfig config = YiIMConfig.getInstance();
    config.setExited(false);
    YiPrefsKeeper.write(this, config);
    if (getXmppService() == null) {
        getHandler().sendEmptyMessageDelayed(MSG_CHECK_XMPP_SERVICE, 200);
    } else {
        startXmpp();
    }
}

0 View Complete Implementation : SlidingMenuUtils.java
Copyright Apache License 2.0
Author : BigAppLink
public static void initSilidingMenu(SlidingFragmentActivity slidingFragmentActivity, View[] ingnoreView, boolean isUseShadow, Drawable background, boolean isLikeQQ) {
    slidingFragmentActivity.setBehindContentView(R.layout.menu_frame);
    final SlidingMenu sm = slidingFragmentActivity.getSlidingMenu();
    sm.setSlidingEnabled(true);
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    MenuFragment menuFragment = MenuFragment.getInstance();
    // 去除头部区域滑动显示侧边栏
    // getSlidingMenu().addIgnoredView(mIndicator);
    slidingFragmentActivity.getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, menuFragment).commit();
    sm.setMode(SlidingMenu.LEFT);
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setFadeEnabled(false);
    sm.setBehindScrollScale(0.25f);
    sm.setFadeDegree(0.25f);
    sm.setTouchmodeMarginThreshold(250);
    sm.setBackgroundDrawable(background);
    if (!ArrayUtils.isNullOrContainEmpty(ingnoreView)) {
        for (View v : ingnoreView) {
            sm.addIgnoredView(v);
        }
    }
    if (isUseShadow) {
        sm.setShadowWidth(20);
        sm.setShadowDrawable(R.drawable.shape_sliding_left);
    }
    if (isLikeQQ) {
        sm.setBehindCanvasTransformer(new SlidingMenu.CanvasTransformer() {

            @Override
            public void transformCanvas(Canvas canvas, float percentOpen) {
                float scale = (float) (percentOpen * 0.25 + 0.75);
                canvas.scale(scale, scale, -canvas.getWidth() / 2, canvas.getHeight() / 2);
            }
        });
        sm.setAboveCanvasTransformer(new SlidingMenu.CanvasTransformer() {

            @Override
            public void transformCanvas(Canvas canvas, float percentOpen) {
                float scale = (float) (1 - percentOpen * 0.25);
                canvas.scale(scale, scale, 0, canvas.getHeight() / 2);
            }
        });
    // menuFragment.getScrollView().setBackgroundColor(slidingFragmentActivity.getResources().getColor(R.color.transparent));
    // menuFragment.getScrollView().setBackgroundDrawable(slidingFragmentActivity.getResources().getDrawable(R.drawable.trans));
    }
}

0 View Complete Implementation : ZenMainActivity.java
Copyright MIT License
Author : nihaoyalong
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ZenAdsModel model = ZenAdsModel.getInstance();
    model.load();
    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    setContentView(R.layout.zen_main_frame);
    mLoading = new ZenLoadingView(this);
    if (findViewById(R.id.zen_menu_frame) == null) {
        setBehindContentView(R.layout.zen_menu_frame);
        getSlidingMenu().setSlidingEnabled(true);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    // show home as up so we can toggle
    } else {
        // add a dummy view
        View v = new View(this);
        setBehindContentView(v);
        getSlidingMenu().setSlidingEnabled(false);
        getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    }
    // set the Behind View Fragment
    getSupportFragmentManager().beginTransaction().replace(R.id.zen_menu_frame, new ZenMenuFragment()).commit();
    // set the Front View Fragment
    ZenThreadsFragment threadsFragment = new ZenThreadsFragment();
    mContent = threadsFragment;
    setreplacedle("���н�");
    threadsFragment.fid = "34";
    mFid = "34";
    getSupportFragmentManager().beginTransaction().replace(R.id.zen_main_frame, threadsFragment).commit();
    // customize the SlidingMenu
    SlidingMenu sm = getSlidingMenu();
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindScrollScale(0.25f);
    sm.setFadeDegree(0.25f);
    ZenMyBoardsModel boardModel = ZenMyBoardsModel.getInstance();
    boardModel.load();
    mHasNewNotification = false;
    try {
        IntentFilter filter = new IntentFilter();
        filter.addAction(ZenNotificationModel.ZEN_NEW_NOTIFICATION);
        filter.addAction(ZenNotificationModel.ZEN_NOTIFICATION_EMPTY);
        registerReceiver(mBroadcastReceiver, filter);
        IntentFilter update = new IntentFilter();
        update.addAction(ZenUpdateManager.ZEN_NEW_VERSION);
        registerReceiver(mUpdateReceiver, update);
    } catch (Exception e) {
        e.printStackTrace();
    }
    ZenUpdateManager.getInstance().CheckUpdate();
}