`
jiav_net
  • 浏览: 109388 次
文章分类
社区版块
存档分类
最新评论

Toast

 
阅读更多
Toast的基本原理其实就是将一个View添加到WindowManager中,让WindowManager来把View显示出来。(WindowManager可以将View显示在任何地方,任何Activity之上)


Toast的默认属性
Java代码收藏代码
  1. //对其方式为:水平居中,并在底部
  2. mGravity=Gravtiy.CENTER_HORIZONTAL|Gravtiy.BOTTOM;
  3. mX=0;
  4. mY=context.getResources().getDimensionPixelSize(com.android.internal.R.dimen.toast_y_offset);
  5. mHorizontalMargin=0;
  6. mVerticalMargin=0;
  7. 所以用Toast.makeText(getApplicationContext(),R.string.text,Toast.LENGTH_SHORT).show();生成的Toast总是处在底部水平居中的位置



在指定x, y处显示Toast
Java代码收藏代码
  1. //在(50,100)处显示Toast
  2. Toasttoast=Toast.makeText(getApplicationContext(),"toastuse",Toast.LENGTH_SHORT);
  3. toast.setGravity(Gravity.TOP|Gravity.LEFT,50,100);
  4. toast.show();
  5. //如果使用Gravity.NO_GRAVITY,后面的x,y就是相对于屏幕的中心点的(估计android是默认这么处理的)
  6. Toasttoast=Toast.makeText(getApplicationContext(),"toastuse",Toast.LENGTH_SHORT);
  7. toast.setGravity(Gravity.NO_GRAVITY,50,100);
  8. toast.show();
  9. //用margin来控制toast的位置
  10. Toasttoast=Toast.makeText(getApplicationContext(),"toastuse",Toast.LENGTH_SHORT);
  11. toast.setGravity(Gravity.LEFT|Gravity.TOP,0,0);
  12. //leftMargin,topMargin分别是容器width,height的%多少(这里是10%和20%)
  13. toast.setMargin(0.1F,0.2F);
  14. toast.show();



指定View的Toast
Java代码收藏代码
  1. //布局xml:R.layout.toast
  2. <Button
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:id="@android:id/message"
  5. android:layout_width="fill_parent"
  6. android:layout_height="wrap_content"/>
  7. Toasttoast=newToast(getApplicationContext());
  8. toast.setView(LayoutInflater.from(getApplicationContext()).inflate(R.layout.toast,null));
  9. toast.setText("toastuse");
  10. //Button是否fill_parent是由gravity控制的,xml中的不起任何作用
  11. toast.setGravity(toast.getGravity()|Gravity.FILL_HORIZONTAL,
  12. toast.getXOffset(),toast.getYOffset());
  13. toast.setDuration(Toast.LENGTH_SHORT);
  14. toast.show();

Toast部分源码
Java代码收藏代码
  1. //Toast的构造器只设置了mY这个属性。mNextView,mDuration都没有设置(用makeText的话,这两个属性会设置)
  2. publicToast(Contextcontext){
  3. mContext=context;
  4. mTN=newTN();
  5. mY=context.getResources().getDimensionPixelSize(com.android.internal.R.dimen.toast_y_offset);
  6. }
  7. //setText方法,需要将显示text的view的id设为@android:id/message,否则会抛RuntimeException
  8. publicvoidsetText(CharSequences){
  9. if(mNextView==null){
  10. thrownewRuntimeException("ThisToastwasnotcreatedwithToast.makeText()");
  11. }
  12. TextViewtv=(TextView)mNextView.findViewById(com.android.internal.R.id.message);
  13. if(tv==null){
  14. thrownewRuntimeException("ThisToastwasnotcreatedwithToast.makeText()");
  15. }
  16. tv.setText(s);
  17. }




一直显示的Toast
实现原理是:在Toast隐藏之前,再show一个相同的Toast,来实现长显示的假象
Java代码收藏代码
  1. privateclassToastWrapper{
  2. privateToastmToast;
  3. privateHandlermHandler;
  4. privateRunnablemShowToast=newRunnable(){
  5. @Override
  6. publicvoidrun(){
  7. continueShow();
  8. }
  9. };
  10. privatebooleanmCancelled=true;
  11. publicToastWrapper(Contextctxt){
  12. this(ctxt,newHandler());
  13. }
  14. publicToastWrapper(Contextctxt,Handlerhandler){
  15. mToast=Toast.makeText(ctxt,null,Toast.LENGTH_SHORT);
  16. mHandler=handler;
  17. }
  18. publicToastgetToast(){
  19. returnmToast;
  20. }
  21. publicvoidshowUntilCancel(){
  22. if(mCancelled){
  23. mCancelled=false;
  24. mToast.setDuration(Toast.LENGTH_LONG);
  25. continueShow();
  26. }
  27. }
  28. publicvoidcancel(){
  29. mCancelled=true;
  30. mToast.cancel();
  31. }
  32. privatevoidcontinueShow(){
  33. if(mCancelled){
  34. return;
  35. }
  36. mToast.show();
  37. mHandler.postDelayed(mShowToast,3000);
  38. }
  39. }

使用ToastWrapper
Java代码收藏代码
  1. //一直显示的toast
  2. toastWrapper=newToastWrapper(getApplicationContext());
  3. Toasttoast=toastWrapper.getToast();
  4. toast.setText("toastwrapper");
  5. //...
  6. Buttonbutton=newButton(getApplicationContext());
  7. button.setText("一直显示toast");
  8. button.setOnClickListener(newView.OnClickListener(){
  9. @Override
  10. publicvoidonClick(Viewview){
  11. toastWrapper.showUntilCancel();
  12. }
  13. });
  14. Buttonbutton=newButton(getApplicationContext());
  15. button.setText("隐藏toast");
  16. button.setOnClickListener(newView.OnClickListener(){
  17. @Override
  18. publicvoidonClick(Viewview){
  19. toastWrapper.cancel();
  20. }
  21. });
  22. //一搬的toast
  23. Buttonbutton=newButton(getApplicationContext());
  24. button.setText("一般的toast");
  25. button.setOnClickListener(newView.OnClickListener(){
  26. @Override
  27. publicvoidonClick(Viewview){
  28. Toasttoast=toastWrapper.getToast();
  29. toast.setDuration(Toast.LENGTH_SHORT);
  30. toast.show();
  31. }
  32. });

Android服务service里面出Toast:

  1. if(phoneIsInUse())
  2. {
  3. newThread(newRunnable(){
  4. publicvoidrun(){
  5. Looper.prepare();
  6. Toast
  7. .makeText(
  8. VuiService.this,
  9. "请结束通话后再试",Toast.LENGTH_LONG).show();
  10. Looper.loop();
  11. }
  12. }).start();
  13. return;
  14. }

分享到:
评论

相关推荐

    自定义Toast,设置Toast显示位置,自定义Toast的复杂布局

    在Android开发中,Toast是一种轻量级的通知方式,它能够在屏幕中央短暂地显示一行文本信息。然而,系统默认的Toast功能有限,仅提供简单的文本显示和预设的显示位置。当我们需要更复杂的交互或者定制化设计时,就...

    自定义Toast及解决重复出现Toast的问题

    在Android开发中,Toast是一种轻量级的通知方式,它能够在屏幕中央或底部显示短暂的信息,然后自动消失。然而,原始的Toast有时无法满足开发者对于样式、持续时间或交互的需求,因此,自定义Toast就显得尤为重要。...

    android自定义Toast设定显示时间

    Android 自定义 Toast 设定显示时间是指在 Android 应用程序中,自定义 Toast 的显示时间,而不是使用系统默认的 Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG。本文将详细介绍如何使用 WindowManager 实现自定义 Toast...

    自定义Application级别toast Demo

    在Android开发中,Toast是一种轻量级的通知方式,它用于显示短暂的信息,通常用来提示用户某个操作的结果。然而,系统默认的Toast有时无法满足开发者的需求,例如样式、位置或者交互等方面的定制。在这种情况下,...

    Toast的几行代码

    在Android开发中,`Toast`是一个非常常用的组件,它用于显示短暂的信息提示,通常不会干扰用户的操作。在标题“Toast的几行代码”中,我们可以理解这是一个关于如何简单使用`Toast`来创建提示效果的教程。描述“简单...

    Android 5.0以上Toast不显示的解决方法

    实际上用户本意只是想关闭Notification,但是Toast的show方法中有调用INotificationManager这个类,而这个类在用户关闭消息通知权限的同时被禁用了,所以我们的吐司无法显示。 Toast.show() 效果图 自定义Toast...

    Toast消息框提示

    在Android应用开发中,`Toast`是一个非常常用且实用的组件,它用于向用户显示短暂的消息提示。这些提示不会阻断用户的操作,而是快速出现在屏幕上的一个特定位置,然后在一段时间后自动消失。`Toast`通常用于提供轻...

    Toast的基本使用代码

    在Android开发中,`Toast`是一种轻量级的反馈机制,用于向用户显示短暂的通知信息。它不会阻断用户与应用程序的交互,因为`Toast`会自动在一段时间后消失。在本篇中,我们将深入探讨`Toast`的基本使用,对应于2.1...

    CocosCreator-Toast.rar

    在这个"CocosCreator-Toast.rar"压缩包中,包含的是一个适用于Cocos Creator的自定义Toast组件,这个组件模仿了Android平台上的Toast功能,用于在游戏界面中显示短暂的信息提示。 1. **Toast控件介绍**: Toast...

    Vue 之 Toast 消息提示插件的简单封装

    vue 中简单封装类似 Toast 的消息提示插件,然后在 vue 中任意位置都可以简单使用 Toast 消息显示最前,并且默认 3 秒后自动消失 实现原理 1、vue 创建 Toast 消失提示组件的显示界面 2、js 代码动态引入 Toast 的 ...

    自定义Toast的显示内容和显示位置

    Android中定义了一个Toast对象,用以弹出一个窗口来给予用户帮助和提示,和对话框不同的是,Toast并不是以独占方式显示的,它并不会抢夺用户的焦点,在弹出Toast的时候,依然可以对之前的界面进行操作,我们在“”...

    c# winform 类似android toast消息功能

    在C# WinForm开发中,有时我们希望实现类似Android中的Toast功能,以便向用户显示短暂的通知消息。Android的Toast提供了一种轻量级的提示方式,可以在不中断用户操作的情况下展示信息。C# WinForm虽然没有内置的...

    Bootstrap toast消息框插件

    Bootstrap Toast消息框插件是基于流行的前端框架Bootstrap开发的一个组件,用于在网页上优雅地展示短暂的通知或消息。这些消息通常包含重要的信息、警告或成功提示,会在用户界面上短暂出现,然后自动消失,或者通过...

    Android Toast 自定义背景、图片 随心使用

    在Android开发中,`Toast`是一种轻量级的提示方式,用于向用户显示短暂的信息,如操作结果或者简单的提示。通常,`Toast`会显示一个简单的文本消息,但默认样式可能无法满足所有设计需求。本篇文章将深入探讨如何在...

    Android-自定义Toast解决系统Toast存在的问题

    在Android应用开发中,Toast是一种常用的轻量级提示方式,用于短暂显示消息,告知用户一些信息或者操作结果。然而,系统默认的Toast虽然方便,但其样式和功能相对固定,不能满足所有开发者的需求。在某些情况下,...

    Qt仿Android的toast控件效果

    在本文中,我们将深入探讨如何使用Qt Widget Application技术来创建一个类似于Android中toast的控件效果。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动以及嵌入式设备上。而Android的toast控件是一种...

    C# Winform 类似Android Toast消息功能

    【C# Winform 类似Android Toast消息功能】是一种在Windows桌面应用中实现类似Android系统Toast功能的技术。在Android中,Toast是一种短暂显示信息的方式,它不会阻断用户与界面的交互,而是在屏幕某一位置短暂展示...

    微信小程序自定义toast

    在微信小程序中,自定义`Toast`是一种常见的需求,它能提供类似Android系统中的`Toast`功能,用于显示短暂的通知信息。默认的`Toast`组件可能无法满足所有设计和交互的需求,因此开发者需要根据自己的应用风格和用户...

    Toast自定义视图,设置显示时间的方法

    在Android开发中,`Toast`是一种常见的用于短暂显示简短信息的工具,它可以在屏幕上浮动一段时间后自动消失。默认情况下,`Toast`显示一个简单的文本消息,但有时我们需要自定义`Toast`的视图,以满足更复杂的需求,...

    多次点击Toast只弹一次

    在Android开发中,Toast是一种常见的轻量级提示方式,它用于显示短暂的提示信息,而不会中断用户与应用的交互。然而,有时我们可能会遇到一个问题:当用户多次快速点击同一个触发Toast显示的按钮时,系统可能只会弹...

Global site tag (gtag.js) - Google Analytics