用户通知方法:Toast、Status Bar、Dialog

3403阅读 0评论2012-03-03 十七岁的回忆
分类:嵌入式

用户通知方法   

在系统发生事件的时候,需要使用某种方法通知用户。在Android系统中,用户通知过程通常不宜打断用户当前的操作。

Android的用户通知方法包含以下三种。

wps_clip_image-19079 Toast Notification:简单通知;

wps_clip_image-2739 Status Bar Notification:状态栏通知;

wps_clip_image-3123 Dialog Notification:对话框通知。

在几种通知方式中,Dialog在实现上属于活动的一部分,只能用于活动。Toast通知和Status Bar通知可以用于后台程序。当Service和BroadcastReceiver中的某个“事件”被激发的时候,常常使用Toast和Status Bar在不打断用户操作的情况下,对用户进行提示。

è 6.5.1  Toast通知

Toast是一种简单的通知方式,消息可以自动消失,可以使用布局文件构建较为复杂的Toast,但是不能和用户进行交互。

Toast通知主要需要使用android.widget包中的Toast类来完成,几个通过Toast实现的通知效果如图6-7所示。

wps_clip_image-26078 wps_clip_image-1434 wps_clip_image-13055

图6-7  Toast通知效果(左:基本;中:定义位置;右:使用布局)

1.基本使用方法

Toast具有以下两个静态的方法,用于得到一个Toast的实例:

static Toast makeText(Context context, CharSequence text, int duration)

static Toast makeText(Context context, int resId, int duration)

makeText()需要传入当前的上下文,再附加文本信息或者资源文件id,持续时间(可义设置为LENGTH_SHORT 和 LENGTH_LONG两个数值)。直接在代码中使用akeText(),就可以启动一个Toast。

如图6-7中左图所示,一个简单的Toast使用的代码如下:

public void toast_1(Context context)

{

    Toast toast = Toast.makeText(context, "Toast 1\n"

                         +"1. long duration\n"

                         +"2. Default Position.\n"

                         +"3. Default layout.", Toast.LENGTH_LONG);

    toast.show(); // 显示Toast

}

如图6-7中中图所示,一个带有位置控制的Toast使用的代码如下:

public void toast_2(Context context)

{

    Toast toast = Toast.makeText(context, "Toast 2\n"

                         +"1. long duration\n"

                         +"2. Custom Position.\n"

                         +"3. Default layout.", Toast.LENGTH_LONG);

    toast.setGravity(Gravity.LEFT | Gravity.CENTER, 20,20);

    toast.show(); // 显示Toast

}

由于使用setGravity()进行了设置,将Toast的内容置于了居中偏左的位置。

2.扩展的使用方法

Toast中包含一些设置接口,甚至可以将一个View设置到其中。Toast类中一些额外的方法如下所示:

public void setText(CharSequence s)        // 设置文本

public void setDuration(int duration)      // 设置持续时间

public void setGravity(int gravity, int xOffset, int yOffset)        // 设置对齐

public void setMargin(float horizontalMargin, float verticalMargin) // 设置边缘

public void setView(View view)               // 设置其中的视图

setDuration()和setDuration ()用于设置Toast中的文本和持续时间;setGravity()和setMargin()方法用于设置Toast的对齐方式和边缘。setView()方法用于定义Toast中的内容视图,可以结合LayoutInflater和布局文件来使用。

自定义其中内容使用Toast的方法如下所示。

public void toast_3(Context context)

{

    LayoutInflater inflater = LayoutInflater.from(context);

    View v =  inflater.inflate(R.layout.toast_notification,null);

    TextView tv = (TextView)v.findViewById(R.id.text);

    tv.setText("Layout Toast.\nNote: Can't use Button !");

    Toast toast = new Toast(context);  // 建立Toast

    toast.setView(v);  // 设置其中的View

    toast.show();       // 显示Toast

}

其中使用的布局文件toast_notification.xml的内容如下所示:

    android:layout_width="fill_parent" android:layout_height="fill_parent"

    android:orientation="vertical"

    android:background="@android:drawable/picture_frame">

   

       android:background="#ff7f0000"

       android:layout_width="100dp" android:layout_height="100dp" />

   

android:textSize="25dp" android:textColor="#ff000000"

android:layout_width="wrap_content" android:layout_height="wrap_content" />

   

         android:layout_height="wrap_content"

         android:orientation="horizontal" android:gravity="center_vertical"  >

       

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

       

上一篇:使用2D图形接口的程序结构
下一篇:程序的组件模式