2025-05-24

通常我們需要在用戶的屏幕上展示更多的信息,但是用戶的屏幕大小是有限的,那麼我們如何利用有限的空間來展示更多的信息呢?Android為我們提供瞭SlidingDrawer類,幫助我們輕松實現想要的效果。諸如在墨跡天氣中的墨跡推薦,360安全衛士中都有所體現。
下面我們就來學習SlidingDrawer類,實現上述效果:
效果圖:
未展開時: 

 

展開後:

 

下面看代碼:

首先是佈局文件:

[html] <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/splash_background" 
    > 
    <SlidingDrawer android:id="@+id/slidingDrawer" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:handle="@+id/handle" 
        android:content="@+id/content" 
        > 
        <LinearLayout android:id="@+id/content" 
            android:orientation="vertical" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:background="@drawable/empty"> 
        </LinearLayout> 
        <Button android:id="@+id/handle" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text=" open " 
            android:textSize="24dip" 
            /> 
        </SlidingDrawer> 
</LinearLayout> 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/splash_background"
    >
 <SlidingDrawer android:id="@+id/slidingDrawer"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:handle="@+id/handle"
  android:content="@+id/content"
  >
  <LinearLayout android:id="@+id/content"
   android:orientation="vertical"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/empty">
  </LinearLayout>
  <Button android:id="@+id/handle"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text=" open "
   android:textSize="24dip"
   />
  </SlidingDrawer>
</LinearLayout>
主要屬性:
android:handle="@+id/handle" 相當於展開或收回按鈕,這裡我用瞭一個Button來演示(TextView等都可以),在實際項目中使用ImageView比較好,隻需設置展開和關閉時的圖標樣式就可以瞭。

android:content="@+id/content" 展開後增加的內容,沒什麼好說的。

 

 

主代碼:

[java] package com.cloay.slidingdrawer; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.SlidingDrawer; 
import android.widget.SlidingDrawer.OnDrawerCloseListener; 
import android.widget.SlidingDrawer.OnDrawerOpenListener; 
/**
 * 抽屜效果演示
 * SlidingDrawerTestActivity.java
 * @author cloay
 * 2012-1-30
 */ 
public class SlidingDrawerTestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    private Button button; 
    private SlidingDrawer slidingDrawer; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        button = (Button) findViewById(R.id.handle); 
        slidingDrawer = (SlidingDrawer) findViewById(R.id.slidingDrawer); 
         
        slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {//收回做一些處理  
             
            @Override 
            public void onDrawerClosed() { 
                button.setText("Open"); //這裡我將文字提示改成Open  
            } 
        }); 
         
        slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {//展開時做一些處理  
             
            @Override 
            public void onDrawerOpened() {  
                button.setText("Close"); //這裡我將文字提示改成Close  
            } 
        }); 
    } 

package com.cloay.slidingdrawer;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
/**
 * 抽屜效果演示
 * SlidingDrawerTestActivity.java
 * @author cloay
 * 2012-1-30
 */
public class SlidingDrawerTestActivity extends Activity {
    /** Called when the activity is first created. */
 private Button button;
 private SlidingDrawer slidingDrawer;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        button = (Button) findViewById(R.id.handle);
        slidingDrawer = (SlidingDrawer) findViewById(R.id.slidingDrawer);
       
        slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {//收回做一些處理
   
   @Override
   public void onDrawerClosed() {
    button.setText("Open"); //這裡我將文字提示改成Open
   }
  });
       
        slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {//展開時做一些處理
   
   @Override
   public void onDrawerOpened() {
    button.setText("Close"); //這裡我將文字提示改成Close
   }
  });
    }
}

 

很簡單,就不多寫瞭!有問題請留言大傢一起學習交流!  

摘自 Cloay的專欄
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *