1. 程式人生 > >安卓端實現拉出式、抽屜式、仿QQ側滑選單效果

安卓端實現拉出式、抽屜式、仿QQ側滑選單效果

一、概述

一般的側滑實現:

ViewGroup Menu+Content

onTouchEvent監聽器可以用來監聽手指擡起,點選等事件

MOVE:不斷監聽使用者的移動距離,改變ViewGroupleftMargin

UP:對使用者的操作進行判斷,判斷是大於一半還是小於一半,若大於則顯示選單,若小於則隱藏選單(即根據顯示選單的寬度,決定將其隱藏還是顯示)

1、Scroller輔助類實現動畫效果

2、LeftMargin+Thread

換個思路:繼承HorizontalScrollerView(水平滾動條),好處:無需判斷高度只需考慮水平寬度,可以省去

MOVE衝突的處理。

二、建立安卓工程QQ50SlidingMenu

選單佈局檔案:

新建佈局檔案:left_menu.xml

Strings.xml: 

 QQ側滑選單
    Settings
    Hello world!
    趙靈兒
    林月如
    阿奴
    韓菱紗
    唐雨柔
    切換選單

  佈局檔案:

    android:layout_width="match_parent"

android:layout_height="match_parent" 

android:background="#0000" 

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_centerInParent="true"

        android:orientation="vertical">

            android:layout_width="fill_parent"

            android:layout_height="wrap_content">

                android:id="@+id/img1"

                android:layout_width="50dp"

                android:layout_height="50dp"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:src="@drawable/img_1"

                android:layout_centerVertical="true"

                />

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:textColor="#ffffff"

                android:text="@string/txt1"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:layout_toRightOf="@+id/img1"

                android:layout_centerVertical="true"

                />

            android:layout_width="fill_parent"

            android:layout_height="wrap_content">

                android:id="@+id/img2"

                android:layout_width="50dp"

                android:layout_height="50dp"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:src="@drawable/img_2"

                android:layout_centerVertical="true"

                />

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:textColor="#ffffff"

                android:text="@string/txt2"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:layout_toRightOf="@+id/img2"

                android:layout_centerVertical="true"

                />

            android:layout_width="fill_parent"

            android:layout_height="wrap_content">

                android:id="@+id/img3"

                android:layout_width="50dp"

                android:layout_height="50dp"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:src="@drawable/img_3"

                android:layout_centerVertical="true"

                />

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:textColor="#ffffff"

                android:text="@string/txt3"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:layout_toRightOf="@+id/img3"

                android:layout_centerVertical="true"

                />

            android:layout_width="fill_parent"

            android:layout_height="wrap_content">

                android:id="@+id/img4"

                android:layout_width="50dp"

                android:layout_height="50dp"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:src="@drawable/img_4"

                android:layout_centerVertical="true"

                />

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:textColor="#ffffff"

                android:text="@string/txt4"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:layout_toRightOf="@+id/img4"

                android:layout_centerVertical="true"

                />

            android:layout_width="fill_parent"

            android:layout_height="wrap_content">

                android:id="@+id/img5"

                android:layout_width="50dp"

                android:layout_height="50dp"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:src="@drawable/img_5"

                android:layout_centerVertical="true"

                />

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:textSize="20sp"

                android:textColor="#ffffff"

                android:text="@string/txt5"

                android:layout_marginLeft="20dp"

                android:layout_marginTop="20dp"

                android:layout_toRightOf="@+id/img5"

                android:layout_centerVertical="true"

                />

接下來完成主佈局檔案:mainAActivity.xm