【Android UI設計與開發】第17期:滑動功能表列(二)開源項目SlidingMenu的樣本

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   color   ar   os   使用   

通過上一篇文章的講解,相信大家對於開源項目SlidingMenu都有了一個比較初步的瞭解(不瞭解的可以參考上

一篇文章),那麼從這一章開始,博主將會以SlidingMenu為重心,給大家帶來非常豐富的樣本示範,讓大家對

SlidingMenu有一個更加深入的瞭解以及如何去實現一些比較炫的滑動效果。

              這篇文章會給大家帶來7個不同效果的樣本,每個樣本都包含了最基本的使用方法,從易到難,循序漸進。能夠

讓初學者可以快速的掌握SlidingMenu的使用方法。下一篇文章會給大家帶來三種不同的動畫效果來實現滑動功能表列

的滑動。

         關於這些樣本,都是SlidingMenu開源項目中內建的一些樣本,但是對於初學者來說,要想運行這些樣本查看效

果,就必須要匯入很多的庫,使用起來也是非常的麻煩。博主這裡為了能夠方便大家更好的學習,就把每個樣本都單

獨拿了出來,並且添加了一些非常詳細的注釋,讓初學者能夠一看就懂,那麼博主的目的就達到了。

         好的,話不多說,希望大家能夠繼續支援!

 

一、樣本

 

        先上是博主一貫的作風,這樣做可以讓大家對於效果的實現有一個大概的瞭解,可以從中得到自己想要去

實現的效果。

 

1、樣本一

 

該樣本主要是示範通過改變不同的值來改變滑動菜單不同的效果,可以設定的值有:

<1> 設定滑動菜單顯示的位置(左邊、右邊或者左右兩邊都有);

<2> 設定觸控螢幕幕的模式(全屏觸摸開啟滑動菜單、邊緣觸摸開啟滑動菜單或者觸摸不能開啟滑動菜單);

<3> 設定滑動菜單滑動時縮放的效果以及關閉此效果(值越大效果越明顯);

<4> 設定滑動菜單滑動時的陰影製作效果以及關閉此效果(值越大效果越明顯);

<5> 設定滑動菜單滑動時漸入漸出的效果(值越大效果越明顯)。

                             一                                                                                                      二

                                  

 

2、樣本二

 

該樣本主要就是教大家實現一個簡單的放置在左邊滑動功能表列的效果。

                                    一

 

3、樣本三

 

該樣本實現了在左右兩邊存放兩個視圖,並且都可以通滑動螢幕來開啟。

                

 

4、樣本四

 

該樣本主要示範了通過Fragment來改變主視圖的介面內容。

                

 

5、樣本五

 

      該樣本也是通過Fragment來改變主視圖的介面內容,但不同的是列表中存放的是圖片,並且點擊列表圖片之後會

經過壓縮顯示出來。                                      

                        

 

                                                                         

 

6、樣本六

 

在該樣本中使用ViewPager這個類,將多個Fragment存放在viewpager中,並在主介面視圖內容中顯示出來。

                                                           一                                                                                                                                               二

             

 

7、樣本七

 

          該樣本主要示範了當觸控螢幕幕滑動時,上面的標題列TitleBar並不會跟隨著一起滑動,滑動的只是中間的內容視圖。(印象筆記實現了此效果)

 

二、代碼講解

 

        由於樣本比較多,所以博主我就不對每個樣本的代碼一一進行講解了,這裡就挑一個最基礎的樣本給大家講解一

下。在文章的末尾,我會把所有的樣本打包供大家下載學習,裡面有一些詳細的注釋,相信大家能一看就懂。

 

1、項目結構圖

 

 

2、content_frame.xml布局

         我們先從布局檔案開始講起,這裡為什麼要定義一個content_frame.xml呢?主要是為了定義一個虛擬視圖,方便Fragment能夠替換該視圖,以達到Fragment的視圖內容能夠顯示在螢幕上的效果。

<?xml version="1.0" encoding="utf-8"?>  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:id="@+id/content_frame"      android:layout_width="match_parent"      android:layout_height="match_parent" />  

大家可以看到這裡就定義了一個FrameLayout布局,在給它附上一個id,以至於在系統中可以找到該布局對象。
       

3、menu_frame.xml布局

這個布局檔案是用來存放滑動菜單開啟後的視圖介面的。

<?xml version="1.0" encoding="utf-8"?>  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:id="@+id/menu_frame"      android:layout_width="match_parent"      android:layout_height="match_parent" />  

4、list.xml

這個list布局檔案會在ListFragment中用到。

<?xml version="1.0" encoding="utf-8"?>  <ListView xmlns:android="http://schemas.android.com/apk/res/android"      android:id="@android:id/list"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingLeft="@dimen/list_padding"      android:paddingRight="@dimen/list_padding" />  

5、row.xml

用於存放列表中的圖片和文本。

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="50dp"      android:orientation="horizontal" >        <ImageView          android:id="@+id/row_icon"          android:layout_width="50dp"          android:layout_height="50dp"          android:padding="10dp"          android:src="@drawable/ic_launcher" />        <TextView          android:id="@+id/row_title"          android:layout_width="0dp"          android:layout_height="match_parent"          android:layout_weight="1"          android:gravity="center_vertical"          android:padding="10dp"          android:text="Medium Text"          android:textAppearance="@android:style/TextAppearance.Medium" />    </LinearLayout>  

6、shadow.xml資源

這個資源檔是用來實現陰影製作效果的圖形,使用了漸層的繪圖效果。

<?xml version="1.0" encoding="utf-8"?>  <shape xmlns:android="http://schemas.android.com/apk/res/android" >        <gradient          android:endColor="#33000000"          android:centerColor="#11000000"          android:startColor="#00000000" />    </shape>  

7、SampleListFragment類

講完了布局檔案,再讓我們來看看Java檔案。這個類是用來顯示介面中的列表的。

package com.yangyu.myslidingmenudemo02;    import android.content.Context;  import android.os.Bundle;  import android.support.v4.app.ListFragment;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup;  import android.widget.ArrayAdapter;  import android.widget.ImageView;  import android.widget.TextView;    /**  * @author yangyu  *  功能描述:列表Fragment,用來顯示列表視圖  */  public class SampleListFragment extends ListFragment {        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {          return inflater.inflate(R.layout.list, null);      }        public void onActivityCreated(Bundle savedInstanceState) {          super.onActivityCreated(savedInstanceState);          SampleAdapter adapter = new SampleAdapter(getActivity());          for (int i = 0; i < 20; i++) {              adapter.add(new SampleItem("Sample List", android.R.drawable.ic_menu_search));          }          setListAdapter(adapter);      }        private class SampleItem {          public String tag;          public int iconRes;          public SampleItem(String tag, int iconRes) {              this.tag = tag;               this.iconRes = iconRes;          }      }        public class SampleAdapter extends ArrayAdapter<SampleItem> {            public SampleAdapter(Context context) {              super(context, 0);          }            public View getView(int position, View convertView, ViewGroup parent) {              if (convertView == null) {                  convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null);              }              ImageView icon = (ImageView) convertView.findViewById(R.id.row_icon);              icon.setImageResource(getItem(position).iconRes);              TextView title = (TextView) convertView.findViewById(R.id.row_title);              title.setText(getItem(position).tag);                return convertView;          }        }  }  

8、MainActivity類

這是整個程式的入口類,也是在這個類中,對SlidingMenu的屬性進行設定。

package com.yangyu.myslidingmenudemo02;    import android.os.Bundle;  import android.support.v4.app.FragmentActivity;    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;    public class MainActivity extends FragmentActivity {      private SlidingMenu menu;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);                                    //設定標題          setTitle("Attach");            //初始化滑動菜單          initSlidingMenu();      }        /**      * 初始化滑動菜單      */      private void initSlidingMenu() {          // 設定主介面視圖          setContentView(R.layout.content_frame);          getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new SampleListFragment()).commit();            // 設定滑動菜單的屬性值          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();          }      }    }  

講到這裡差不多就要結束了,下一篇會給大家帶來開啟滑動菜單時實現的動畫效果,希望大家能夠繼續關注!

 

樣本源碼

 

壓縮包中包含所有的項目樣本:

 

每個項目中包含了源碼、實現的以及可直接安裝啟動並執行APK:

 

特別注意:大家運行項目的時候千萬別忘了匯入slidingmenu_library項目,使用方法請參照上一篇文章。

【Android UI設計與開發】第17期:滑動功能表列(二)開源項目SlidingMenu的樣本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.