Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開源框架的SlidingFragment的使用

Android開源框架的SlidingFragment的使用

編輯:關於Android編程

效果如下:
這裡寫圖片描述

直接上代碼,留著以後用,代碼目錄結構如下:
這裡寫圖片描述

其中BaseFragment.java是另外5個Fragment的基類,代碼如下:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> package com.xuliugen.newsclient.fragment.base; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Fragment的基類 * * @author xuliugen * */ public class BaseFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView textView = new TextView(getActivity()); textView.setText(this.getClass().getSimpleName()); // 獲取當前對象對應的類名稱 return textView; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); }; }

另外5個Fragment的代碼都一樣就是直接繼承BaseFragment.java沒有任何實現,其他4個省略

public class Fragment1 extends BaseFragment {

}

MenuFragment.java是用於管理這幾個Fragment的

package com.xuliugen.newsclient.fragment;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.xuliugen.newsclient.MainActivity;
import com.xuliugen.newsclient.R;
import com.xuliugen.newsclient.fragment.base.BaseFragment;

/**
 * 繼承Fragment要自己實現的方法
 * 
 * 用於填充側滑菜單中的數據
 * 
 * OnItemClickListener:listview裡邊的點擊事件
 * 
 * @author xuliugen
 * 
 */
public class MenuFragment extends Fragment implements OnItemClickListener {

    View view;
    private String tag = MenuFragment;

    /**
     * 當activity創建的時候加載數據
     */
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);

        Log.i(tag, onActivityCreated);

        ListView listView = (ListView) view.findViewById(R.id.list_view);

        ArrayAdapter adapter = new ArrayAdapter(getActivity(),
                android.R.layout.simple_list_item_1, android.R.id.text1,
                iniData());
        listView.setAdapter(adapter);// 設置適配器

        listView.setOnItemClickListener(this);
    }

    /**
     * 側邊欄的靜態數據
     * 
     * @return
     */
    private List iniData() {
        List list = new ArrayList();
        list.add(fragment1);
        list.add(fragment2);
        list.add(fragment3);
        list.add(fragment4);
        list.add(fragment5);

        return list;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        Log.i(tag, onCreate);
    }

    /**
     * 用於加載側邊欄
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        Log.i(tag, onCreateView);
        // 加載界面:側邊欄
        view = LayoutInflater.from(getActivity()).inflate(R.layout.list_view,
                null);
        return view;
    }

    /**
     * listview中點擊事件的監聽器 選擇監聽事件
     */
    @Override
    public void onItemClick(AdapterView parent, View view, int position,
            long id) {
        BaseFragment baseFragment = null;
        switch (position) {
        case 0:
            baseFragment = new Fragment1();
            break;
        case 1:
            baseFragment = new Fragment2();
            break;
        case 2:
            baseFragment = new Fragment3();
            break;
        case 3:
            baseFragment = new Fragment4();
            break;
        case 4:
            baseFragment = new Fragment5();
            break;

        }
        /**
         * 讓baseFragment替換界面
         */
        /*
         * getActivity().getSupportFragmentManager() // 獲取fragment的管理者
         * .beginTransaction() // 開啟事物 .replace(R.id.content_frag, baseFragment,
         * Home)// 替換,將menuFragment中的數據替換到R.id.menu_frag中 .commit();// 提交
         */
        // 通過switch選擇,相當於一個回調方法
        switchFragment(baseFragment);
    }

    private void switchFragment(BaseFragment fragment) {
        if (fragment != null) {
            if (getActivity() instanceof MainActivity) {
                ((MainActivity) getActivity()).switchFragment(fragment);
            }
        }
    }
}

MainActivity.java主要是用於初始化SlidingFragmentActivity的操作,設置參數等

package com.xuliugen.newsclient;

import android.os.Bundle;
import android.view.Window;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.xuliugen.newsclient.fragment.Fragment1;
import com.xuliugen.newsclient.fragment.MenuFragment;
import com.xuliugen.newsclient.fragment.base.BaseFragment;

/**
 * 使用滑動菜單首先要繼承SlidingFragmentActivity,然後實現的一般步驟如下:
 * 
 * 1.得到滑動菜單
 * 
 * 2.設置滑動菜單是在左邊還是在右邊出來
 * 
 * 3.設置滑動菜單出來之後,內容頁,顯示的剩余寬度
 * 
 * 4.設置滑動菜單的陰影設置陰影,陰影需要在開始的時候特別淡,慢慢變暗
 * 
 * 5.設置陰影的寬度
 * 
 * 6.設置滑動菜單的范圍
 * 
 * @author xuliugen
 * 
 */
public class MainActivity extends SlidingFragmentActivity {

    SlidingMenu slidingMenu;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);

        setBehindContentView(R.layout.menu); // 加載SlidingFragment的初始化
        setContentView(R.layout.content);// 這裡是動態加載的頁面

        // 設置content內容中的初始值
        Fragment1 fragment1 = new Fragment1();
        getSupportFragmentManager()//
                .beginTransaction()//
                .replace(R.id.content_frag, fragment1)//
                .commit();//

        // 1.得到滑動菜單
        slidingMenu = getSlidingMenu();

        // 2.設置滑動菜單是在左邊還是在右邊出來(左、右、左右)
        slidingMenu.setMode(SlidingMenu.LEFT);

        // 3.設置滑動菜單出來之後,內容頁,顯示的剩余寬度
        slidingMenu.setBehindWidthRes(R.dimen.slidingmenu_offset);

        // 4.設置滑動菜單的陰影設置陰影,陰影需要在開始的時候特別淡,慢慢變暗
        slidingMenu.setShadowDrawable(R.drawable.shadow);

        // 5.設置陰影的寬度
        slidingMenu.setShadowWidth(R.dimen.shadow_width);

        // 6.設置滑動菜單的范圍
        // SlidingMenu.TOUCHMODE_FULLSCREEN:全屏
        // SlidingMenu.TOUCHMODE_MARGIN:邊沿的時候滑動
        // SlidingMenu.TOUCHMODE_NONE:不滑動
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

        // 創建fragmentment
        MenuFragment menuFragment = new MenuFragment();

        getSupportFragmentManager() // 獲取fragment的管理者
                .beginTransaction() // 開啟事物
                .replace(R.id.menu_frag, menuFragment, Menu)// 替換,將menuFragment中的數據替換到R.id.menu_frag中
                .commit();// 提交

    }

    /**
     * 方法回調:在MenuFragment類中進行調用
     * 暴露替換幀布局內容的操作
     * @param fragment
     */
    public void switchFragment(BaseFragment fragment) {
        getSupportFragmentManager()//
                .beginTransaction()//
                .replace(R.id.content_frag, fragment)//
                .commit();

        slidingMenu.toggle();// 點擊之後自動切換
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved