之上,稍作修改即可達到 炫酷的 滑動效果 :)
具體步驟如下:NO.1: 建立一個 內容布局,用於顯示文章
<?xml version="1.0" encoding="utf-8"?><fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/right_fragment" android:name="com.example.myfragments.RightFragment" android:layout_width="match_parent" android:layout_height="match_parent"/>
NO.2: 建立一個 菜單布局,用於顯示菜單
<?xml version="1.0" encoding="utf-8"?><fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/left_fragment" android:name="com.example.myfragments.LeftFragment" android:layout_width="match_parent" android:layout_height="match_parent"/>
NO.3: 下載並安裝 SlidingMenu https://github.com/jfeinstein10/SlidingMenu 開啟 Eclipse ,將 SlidingMenu 匯入。
設定 項目 library 的屬性,勾選 Is Library 。 在自己的項目中引用 library 庫,我的項目為 MyFragments 由於 SlidingMenu 內建了 android-support-v4.jar,所以需要將自己項目中原有的 android-support-v4.jar 刪掉。 成功匯入後的為: ok,至此 SlidingMenu 已經成功引入,下面就開始使用吧 :) NO.4: 使用 SlidingMenu 只需要將 原 MainActivity.java 改寫成如下代碼即可
package com.example.myfragments;import android.app.Activity;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;public class MainActivity extends Activity implements onItemSeletedListener{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); //開始設定滑動菜單 setContentView(R.layout.contentlayout); //設定本文的顯示布局 //------------------------------------------------------------------------------------- //NO.1 繼承 SlidingActivity 方式 //setBehindContentView(R.layout.menulayout); //設定左側菜單的布局 //SlidingMenu menu = getSlidingMenu(); //------------------------------------------------------------------------------------- //NO.2 非繼承 SlidingActivity 方式 SlidingMenu menu = new SlidingMenu(this); menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); menu.setMenu(R.layout.menulayout); //添加菜單 //------------------------------------------------------------------------------------- menu.setMode(SlidingMenu.LEFT); //設定菜單位置 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); //設定菜單開啟檔案 //TOUCHMODE_FULLSCREEN 全螢幕模式 //TOUCHMODE_MARGIN 邊緣模式 //TOUCHMODE_NONE 不能通過手勢開啟 menu.setShadowWidth(12); //設定漸層效果寬度 位於菜單 與 內容 之間 menu.setShadowDrawable(R.drawable.shadow); //設定菜單漸層效果 menu.setFadeDegree(0.9f); //設定淡入程度 當滑出菜單時,漸層效果由0.9 - 0 淡入 menu.setBehindOffset(250); //設定菜單滑出後 距離螢幕右邊的長度(直接設定 dp) //------------------------------------------------------------------------------------- //設定結束 //Fragment 一些代碼增刪改 //添加 //FragmentManager fragmentmanager=getFragmentManager(); //FragmentTransaction fragmenttransaction=fragmentmanager.beginTransaction(); //LeftFragment leftfragment=new LeftFragment(); //fragmenttransaction.add(R.id.left_fragment, leftfragment); //fragmenttransaction.commit(); //刪除 //FragmentManager fragmentmanager=getFragmentManager(); //FragmentTransaction fragmenttransaction=fragmentmanager.beginTransaction(); //Fragment leftfragment=fragmentmanager.findFragmentById(R.id.left_fragment); //fragmenttransaction.remove(leftfragment); //fragmenttransaction.commit(); //替換 //FragmentManager fragmentmanager=getFragmentManager(); //FragmentTransaction fragmenttransaction=fragmentmanager.beginTransaction(); //fragmenttransaction.replace(R.id.left_fragment, new LeftFragment()); //fragmenttransaction.commit(); } @Override public void onItemSeleted(int position) { RightFragment rightFragment=(RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment); if(rightFragment != null) rightFragment.update(position); }}
上述代碼中用到的 漸層設定為 R.drawable.shadow 該設定檔用到的顏色值見 文章 Android ListView 之 SimpleAdapter 二 (包含 item 中按鈕監聽) 中 第五節 color.xml 顏色值。
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" > <gradient android:endColor="@color/darkblue" android:centerColor="@color/darkgray" android:startColor="@color/black" /></shape>
NO.5: 滑動菜單效果展示 注意此處的漸層淡入效果 漸層效果為 由 黑色-深灰色-深藍色 漸層。
註:轉載請註明出處 :) 畢竟代碼是一個一個敲出來的啊,O(∩_∩)O~