上一篇文章總體規划了這個項目的情況,今天講講實現電台列表。今天其實主要想講解的是SlidingMenu,也就是我們平時說的側滑欄,現在很多應用都有用這種UI效果。SlidingMenu側滑欄功能實現的方式很多,可以自己使用ViewGroup實現也可以自己繪圖實現。我這里借用了一個開源項目SlidingMenu,因為我這里不是研究如何實現SlidingMenu,而且為了快速實現這種功能,所以就直接使用這個開源項目的成果。
(PS:新建的QQ群,有興趣可以加入一起討論:Android群:322599434)
上面就是側滑欄的效果,指定一邊滑動,就可以拉出一個新的界面出來。
1、工程里引用SlidingMenu
首先我們說說這個開源工程如何使用,因為SlidingMenu是以工程庫的形式使用,因此我們只需要在我們的工程里面應用這個工程就行。下面說說具體步驟:(這是給初學者看的哈,有經驗的跳過)
我們添加SlidingMenu后,可以查看該工程屬性,其中有一個Library的屬性,說明這是一個Library工程。然后只需要在我們使用的工程里添加應用這個外部庫就可以。
這里添加外部Library,因為我還引用了另外一個解碼庫Vitamio,所以會有兩個外部庫。
2、初始化SlidingMenu
//Edited by mythou
//http://www.cnblogs.com/mythou/
private void initChannelMenu() {
//創建SlidingMenu對象 mChannelMenu = new SlidingMenu(this);
//設置側滑欄菜單位置,這里在左邊。拉動菜單時,會從左邊彈出 mChannelMenu.setMode(SlidingMenu.LEFT);
//設置觸摸的范圍,這里設置全屏 mChannelMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//設置陰影的寬度,查看上面第二張效果圖,靠右邊的位置,有一個陰影過渡。就是這個東西 mChannelMenu.setShadowWidthRes(R.dimen.shadow_width);
//這里是陰影效果,可以設置圖片或者一個顏色過渡 mChannelMenu.setShadowDrawable(R.drawable.shadow);
//設置后面間距,側滑欄和原來界面間距 mChannelMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
//邊框的角度,這里指邊界地方 mChannelMenu.setFadeDegree(0.35f);
//把側滑欄關聯到當前的Activity mChannelMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
//側滑欄的布局文件 mChannelMenu.setMenu(R.layout.channel_slide_menu); }
上面給出了SlidingMenu的詳細初始化配置,我們使用的時候可以根據需要的實際效果配置,達到我們需要的效果。SlidingMenu這個開源工程接口實現很好,可以實現很復雜的配置,同時使用的過程也十分簡單,如果你只是單純需要這種功能,借用這個開源項目是不錯的選擇。如果需要自己實現,也可以借鑒一下這工程。
3、彈出和收起SlidingMenu
一幫情況下,只有設置了上面的mChannelMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN) ,我們只要在屏幕上面向右滑動就可以把SlidingMenu拉出來,不過有時候我們也需要實現點擊某個按鈕就可以把它拉出來,就像我們上面的“電台列表”按鈕,點擊一下會自動彈出SlidingMenu處理,要實現這功能很簡單,只要調動SlidingMenu一個借口即可。
//Edited by mythou
//http://www.cnblogs.com/mythou/
mOpenMenuButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {
//調用SlidingMenu的顯示菜單接口 mChannelMenu.showMenu(); } });
上面通過調用showMenu()即可顯示菜單。隱藏SlidingMenu同樣只需要調用一個接口
//Edited by mythou
//http://www.cnblogs.com/mythou/
@Override public void onBackPressed() { if (mChannelMenu.isMenuShowing()) {
//隱藏SlidingMenu,這里的Content就是我們的主Activity。 mChannelMenu.showContent(); } else { super.onBackPressed(); } }
我這里放在了返回鍵的處理,按下返回鍵的時候,自動收起SlidingMenu菜單。
4、總結
SlidingMenu是一個在Git上很火也很實用的項目,通過使用該項目可以快速在我們的項目中使用側滑欄功能,只要按照我上面配置在新工程引用SlidingMenu就可以。另外補充一點,SlidingMenu提供了一個例子,不過需要用到另外一個開源工程ActionBarSherlock ,如果要配置該例子,注意引用這工程。不過我配置的時候遇到不少問題,建議大家按照我上面方法直接新建一個工程,先看看SlidingMenu的使用和效果。
SlidingMenu的Git項目托管地址:https://github.com/jfeinstein10/SlidingMenu
系列文章:
Android 開發自己的網絡收音機1——功能要求及設計方案
Edited by mythou
原創博文,轉載請標明出處:http://www.cnblogs.com/mythou/p/3205100.html