android中可口的吐司,一种信息提示机制——Toast

  

  这篇文章是我发表在eoeandroid论坛上的帖子,今天也来这里和园友们分享一下,希望对大家有所帮助~  原帖子地址:

 

       http://www.eoeandroid.com/thread-34700-1-1.html

 

  大家平时在开发的时候,应该经常会有这样的需求,向用户提示一些信息,比如程序的状态,或者完成某个操作,而不希望打搅用户当前正在进行的操作——不获取任何焦点。我们一般很容易想到的一个方法就是使用类似对话框的机制,但即使是非模态的对话框,也会打扰用户当前的操作,那么有没有更简单的方法呢?

 

      答案当然是肯定的啦,android已经为我们提供了一个非常简便的方法,那就是Toast,直译为吐司~ 很可爱的名字吧~ 用起来像它的名字一样,非常方便。例如我们要想用户显示一些文本信息,可以使用下面的方法~

 

Toast.makeText(self,  " Hello World! " , Toast.LENGTH_SHORT).show();

 

 

非常简单的一句话,第一个参数self是当前上下文Context对象,接着是我们要显示的消息文字,最后一个参数是显示的时间 ,可以在这两个值里面取其一:

       Toast.LENGTH_SHORT
       Toast.LENGTH_LONG

下面为运行效果 

 

 

 

 

大家看看是不是很熟悉呢,很多应用 中都可以看到类似的提示信息,这条信息不会影响用户任何正在进行的操作,当时间到了之后,他会自动 消失。

那么Toast是不是除了显示文本消息,就没有其他功能 了呢?当然不是了,Toast远不只是显示文本这么简单,我们可以定制它的界面 ,只需使用它的setView 传入任何符合View规范的对象,就可以演变出各种口味的吐司~~

例如,我们的手机上都有调节音量的按钮,其实这个功能的界面就是一个Toast,例如下面这幅图:

 


 

 我们每点击Increase Volume 这个按钮一次,这个进度条就会浮现出来,并且增加一格,如果几秒内没有任何操作,这个进度条就会消失,直到我们再次点击Increase Volume按钮。这个操作就和我们平时调节音量的两个按钮非常像了,下面是主干代码:


我们首先需要定义一个Layout,用来显示Toast中的进度条和提示文字:

 

 1  <? xml version = " 1.0 "  encoding = " utf-8 " ?>
 2  < LinearLayout
 3    xmlns:android = " http://schemas.android.com/apk/res/android "
 4    android:layout_width = " 280dp "
 5    android:layout_height = " wrap_content "
 6    android:gravity = " center_horizontal "
 7    android:orientation = " vertical "
 8    
 9     >
10             < TextView           
11                    android:layout_width = " fill_parent "
12                    android:layout_height = " wrap_content "
13                    android:text = " Volume "
14             />
15             < ProgressBar 
16                    android:id = " @+id/progress "
17                    android:layout_width = " 280dp "
18                    android:layout_height = " wrap_content "
19                    android:progress = " 50 "
20                    android:max = " 100 "
21                    style = " ?android:attr/progressBarStyleHorizontal "
22             />
23  </ LinearLayout >

 

 

随后,我们就可以在按钮的点击事件里面添加下面的代码:

 

 1  ((ProgressBar)volumeView.findViewById(R.id.progress)).setProgress(
 2    ((ProgressBar)volumeView.findViewById(R.id.progress)).getProgress()  +   5         
 3  );
 4                  
 5                  
 6  if (volumeToast  ==   null  ) {
 7     volumeToast  =   new  Toast(self);
 8     volumeToast.setGravity(Gravity.TOP,  0 150 );
 9     volumeToast.setView(volumeView);
10     volumeToast.setDuration(Toast.LENGTH_LONG);
11  }
12                  
13  volumeToast.show();

 

 

 上面这段代码也非常简单吧~虽然实现起来很容易,但却是很实用的功能,我们还可以利用Toast组合中各种新奇的好东西~ 下面就由大家来尽情的发挥想象吧~

 

    源代码下载

 

转载于:https://www.cnblogs.com/springfield/archive/2010/11/06/1870774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值