設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 388|回復: 0
打印 上一主題 下一主題

Android中Toast用法

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2020-6-8 07:42:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

Android具有了兩種訊息提示的方法,分別是ToastNotification。本篇是在介紹Toast的使用方式。

        Toast是一種快速反應的即時訊息,具有(1)位於應用程式畫面最上層以及(2)不會取得UI focus的兩個特性。

Toast主要可以應用在反應使用者操作圖形介面的回饋,例如某些設定上的成功與否。

另外個人認為利用Toast也可以作為一種在設計程式上debug手段,類似在寫c code時會利用printf的debug方式。


Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。而且Toast主要用于向用户显示提示消息。


传参介绍
Toast.makeText(Context context, CharSequence text, @Duration int duration)
contentx : 当前的上下文环境。可用getApplicationContext()或this
text : 要显示的字符串。
duration : 显示的时间长短,以毫秒为单位。Toast默认的有两个LENGTH_LONG(长)和LENGTH_SHORT(短),也可以使用毫秒如2000

显示的几种方式
默认
自定义位置
带图片
完全自定义

页面布局
几个button按钮,方便测试使用
  1.    <Button android:layout_width="match_parent"
  2.              android:layout_height="wrap_content"
  3.              android:text="默认的Toast"
  4.              android:id="@+id/defaultToastBtn"
  5.              android:textSize="20dp"
  6.      />

  7.     <Button android:layout_width="match_parent"
  8.             android:layout_height="wrap_content"
  9.             android:text="自定义位置的Toast"
  10.             android:id="@+id/customLocationBtn"
  11.             android:layout_below="@id/defaultToastBtn"
  12.             android:textSize="20dp"
  13.     />

  14.     <Button android:layout_width="match_parent"
  15.             android:layout_height="wrap_content"
  16.             android:text="带图片的Toast"
  17.             android:id="@+id/imageToastBtn"
  18.             android:layout_below="@id/customLocationBtn"
  19.             android:textSize="20dp"
  20.     />

  21.     <Button android:layout_width="match_parent"
  22.             android:layout_height="wrap_content"
  23.             android:text="完全自定义的Toast"
  24.             android:id="@+id/customToastBtn"
  25.             android:layout_below="@id/imageToastBtn"
  26.             android:textSize="20dp"
  27.     />
複製代碼


完全自定义页面
  1.    <ImageView android:layout_width="wrap_content"
  2.                android:layout_height="wrap_content"
  3.                android:id="@+id/imageView"
  4.     />
  5.     <TextView android:layout_width="wrap_content"
  6.               android:layout_height="wrap_content"
  7.               android:id="@+id/textView"
  8.               android:layout_below="@id/imageView"
  9.     />
複製代碼


Activity处理
  1. public class MainActivity extends AppCompatActivity {

  2.     @Override
  3.     protected void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         setContentView(R.layout.activity_main);

  6.         //绑定监听事件
  7.         findViewById(R.id.defaultToastBtn).setOnClickListener(toastBtn);
  8.         findViewById(R.id.customLocationBtn).setOnClickListener(toastBtn);
  9.         findViewById(R.id.imageToastBtn).setOnClickListener(toastBtn);
  10.         findViewById(R.id.customToastBtn).setOnClickListener(toastBtn);
  11.     }

  12.     View.OnClickListener toastBtn;
  13.     Handler handler;

  14.     {
  15.         toastBtn = new View.OnClickListener() {
  16.             @Override
  17.             //监听事件处理方法
  18.             public void onClick(View v) {
  19.                 int what = 0;
  20.                 Object obj = "";
  21.                 switch (v.getId()) {
  22.                     case R.id.defaultToastBtn:
  23.                         what = 1;
  24.                         obj = "默认的Toast";
  25.                         break;
  26.                     case R.id.customLocationBtn:
  27.                         what = 2;
  28.                         obj = "自定义位置的Toast";
  29.                         break;
  30.                     case R.id.imageToastBtn:
  31.                         what = 3;
  32.                         obj = "带图片的Toast";
  33.                         break;
  34.                     case R.id.customToastBtn:
  35.                         what = 4;
  36.                         obj = "完全自定义的Toast";
  37.                         break;
  38.                     default:
  39.                         what = 0;
  40.                         obj = "数据错误";
  41.                         break;
  42.                 }
  43.                 handler.obtainMessage(what, obj).sendToTarget();
  44.             }
  45.         };

  46.         handler = new Handler(Looper.getMainLooper()) {
  47.             @Override
  48.             //消息提示处理
  49.             public void handleMessage(Message message) {
  50.                 Toast toast;
  51.                 ImageView imageView;
  52.                 switch (message.what) {
  53.                     case 0:
  54.                         Toast.makeText(getApplicationContext(), message.obj.toString(), Toast.LENGTH_SHORT).show();
  55.                         break;
  56.                     case 1:
  57.                         //默认
  58.                         Toast.makeText(getApplicationContext(), message.obj.toString(), Toast.LENGTH_SHORT).show();
  59.                         break;
  60.                     case 2:
  61.                         //自定义
  62.                         toast = Toast.makeText(getApplicationContext(), message.obj.toString(), Toast.LENGTH_LONG);
  63.                         toast.setGravity(Gravity.CENTER, 0, 0);// 居中显示
  64.                         toast.show();
  65.                         break;
  66.                     case 3:
  67.                         //带图片
  68.                         toast = Toast.makeText(getApplicationContext(), message.obj.toString(), Toast.LENGTH_LONG);
  69.                         toast.setGravity(Gravity.TOP, 0, 0);// 最上方显示
  70.                         LinearLayout toastLayout = (LinearLayout) toast.getView();
  71.                         imageView = new ImageView(getApplicationContext());
  72.                         imageView.setImageResource(R.drawable.ic_launcher);
  73.                         toastLayout.addView(imageView, 0);// 0 图片在文字的上方 , 1 图片在文字的下方
  74.                         toast.show();
  75.                         break;
  76.                     case 4:
  77.                         //完全自定义,需要创建一个xml模板
  78.                         LayoutInflater inflater = getLayoutInflater();// LayoutInflater对象
  79.                         View layout = inflater.inflate(R.layout.custom_view, null);
  80.                         imageView = (ImageView) layout.findViewById(R.id.imageView);
  81.                         TextView text = (TextView) layout.findViewById(R.id.textView);
  82.                         imageView.setImageResource(R.drawable.ic_launcher);
  83.                         text.setText(message.obj.toString());

  84.                         toast = new Toast(getApplicationContext());
  85.                         // 底部 、水平居中,X偏移50 Y偏移50
  86.                         toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 50, 50);
  87.                         toast.setDuration(Toast.LENGTH_SHORT);
  88.                         toast.setView(layout);
  89.                         toast.show();
  90.                         break;
  91.                 }
  92.             }
  93.         };
  94.     }
  95. }
複製代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-15 21:56 , Processed in 0.223125 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表