編輯:關於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,講解build.gradle文件。1.1根目錄Android1.1.1defaultConfig是Android的根目錄,可以配置包名等信息,若AndroidMain
一、概述運行時變更就是設備在運行時發生變化(例如屏幕旋轉、鍵盤可用性及語言)。發生這些變化,Android會重啟Activity,這時就需要保存activity的狀態及與
一、概述距離上一篇博客有段時間沒更新了,主要是最近有些私事導致的,那麼就先來一篇簡單一點的博客脈動回來。對於加載圖片,大家都不陌生,一般為了盡可能避免OOM都
Android 側滑菜單的實現,參考網上的代碼,實現側滑菜單。最重要的是這個動畫類UgcAnimations,如何使用動畫類來側滑的封裝FlipperLayout。1、實