通常我們需要在用戶的屏幕上展示更多的信息,但是用戶的屏幕大小是有限的,那麼我們如何利用有限的空間來展示更多的信息呢?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的專欄