第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Android 入門(mén)教程

菜單類(lèi)控件
菜單:Menu
并發(fā)編程
多線(xiàn)程

吐司提示:Toast 的使用方法

在使用 Android 手機(jī)的時(shí)候,有沒(méi)有遇到過(guò)如圖中這種類(lèi)型的消息提示?

Toast in Android

這個(gè)在 Android 中被稱(chēng)為 Toast,用來(lái)短暫的展示一些簡(jiǎn)短的提示信息。相比彈窗來(lái)講它對(duì)用戶(hù)的打擾更小,在提示一段時(shí)間之后會(huì)自動(dòng)消失,通常用來(lái)提示當(dāng)前的狀態(tài)或者一些不太重要的信息。接下來(lái)我們先看看 Toast 的相關(guān)特性然后一起動(dòng)手編寫(xiě)一些與 Toasts 相關(guān)的示例代碼。

1. Toast 的特性

其實(shí)大家在使用 Android 手機(jī)的時(shí)候大致能夠了解 Toast 的特征,這里簡(jiǎn)單歸納一下:

  • 用來(lái)展示簡(jiǎn)短消息提示的控件
  • 會(huì)在短暫展示之后自動(dòng)消失
  • Toast 不會(huì)阻塞 Activiity 或者 Fragment 的運(yùn)行
  • 比較適合用來(lái)給用戶(hù)的某個(gè)操作做一個(gè)反饋

2. Toast 的使用方法

Toast 直接繼承自 Object,相當(dāng)于是一個(gè)比較原始的控件,封裝的也比較友好,我們先來(lái)看看 Toast 可用的 API 及相關(guān)參數(shù)

2.1 Toast 常用 API

  • public static Toast makeText(Context context, CharSequence text, int duration):
    用于創(chuàng)建一個(gè) Toast 并設(shè)置具體的提示文案及展示時(shí)長(zhǎng)
  • public void show():
    顧名思義,觸發(fā) Toast 的展示
  • public void setMargin(float horizontal, float vertical):
    用于設(shè)置 Toast 垂直方向和水平方向上的間距
  • public void setView(View view):
    自定義展示的布局樣式

2.2 Toast 中的常量參數(shù)

  • public static final int LENGTH_LONG:
    長(zhǎng)時(shí)間展示,大約維持 3.5 秒
  • public static final int LENGTH_SHORT:
    短時(shí)間展示,大約維持 2 秒

2.3 如何創(chuàng)建

  1. 調(diào)用 Toast 的靜態(tài)方法makeText:傳入Context、字符串文案、顯示時(shí)長(zhǎng)即可創(chuàng)建一個(gè) Toast。為了避免內(nèi)存泄露,這里的 Context 建議使用getApplicationContext()來(lái)獲取 App 的 Context 傳入,如下:
Toast toast = Toast.makeText(getApplicationContext(),"IMOOC Android Study",Toast.LENGTH_LONG);
  1. 調(diào)用 Toast 的show()方法
toast.show();

我們可以將以上兩句串聯(lián)起來(lái),如下:

Toast.makeText(getApplicationContext(),"IMOOC Android Study",Toast.LENGTH_LONG).show();

3. 設(shè)置 Toast 在屏幕中的位置

按照第 2 小節(jié)的方式 show 出來(lái)的 Toast 默認(rèn)會(huì)在屏幕的底部中間位置展示,如果想要不走尋常路,可以通過(guò)接口setGravity(int gravity, int x, int y)改變 Toast 展示的位置,參數(shù)如下:

  • int gravity:
    第一個(gè)參數(shù)表示重心,和 Layout 里面的 gravity 類(lèi)似,我們可以直接使用 Gravity.java 類(lèi)里面的常量來(lái)設(shè)置。有以下四種可選項(xiàng):
    • Gravity.BOTTOM
    • Gravity.RIGHT
    • Gravity.LEFT
    • Gravity.TOP

當(dāng)然我們也可以同時(shí)設(shè)置兩個(gè)值,中間用“|”隔開(kāi),如Gravity.TOP|Gravity.LEFT表示左上方向。

  • int x:
    設(shè)置水平方向上的距離,這個(gè)距離的參照是左邊還是右邊依賴(lài)第一個(gè)參數(shù)gravity
  • int y:
    設(shè)置垂直方向上的距離,這個(gè)距離的參照是頂部還是底部依賴(lài)于第一個(gè)參數(shù)gravity的設(shè)置

如果設(shè)置 gravity 為 Gravity.CENTER,x 為 100,y 為 200。那么最后 show 出來(lái)的示意圖如下:

Toast 自定義位置

4. Toast 的使用示例

本節(jié)我們用 Toast 實(shí)現(xiàn)一個(gè)“農(nóng)藥”提示,有兩個(gè) Button,點(diǎn)擊會(huì)觸發(fā)一個(gè)短暫的消息提示。代碼比較簡(jiǎn)單,首先在布局中加入兩個(gè) Button:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/dont_wave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="猥瑣發(fā)育,別浪" />

    <Button
        android:id="@+id/hold_on_we_can_win"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="穩(wěn)住,我們能贏" />
</LinearLayout>

接著在 Java 代碼中注冊(cè)監(jiān)聽(tīng)器,在點(diǎn)擊不同 Button 的時(shí)候彈出不同的 Toast 提示信息:


package com.emercy.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity implements View.OnClickListener {

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

        findViewById(R.id.dont_wave).setOnClickListener(this);
        findViewById(R.id.hold_on_we_can_win).setOnClickListener(this);


    }

    @Override
    public void onClick(View v) {
        showToast(((TextView) v).getText().toString());
    }

    private void showToast(String text) {
        LinearLayout layout = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.toast, null);
        TextView textView = layout.findViewById(R.id.text);
        textView.setText(text);
        Toast toast = new Toast(this);
        toast.setView(layout);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.TOP, 0, 500);

        toast.show();
    }
}

可以看到在創(chuàng)建 Toast 之后,通過(guò)setView方法設(shè)置了一個(gè) LinearLayout 類(lèi)型的 View 對(duì)象。通過(guò)這種方式就可以自定義一個(gè)展示樣式,最后編寫(xiě) Toast 的布局樣式代碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:gravity="bottom"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@mipmap/mc" />

    <TextView
        android:id="@+id/text"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp" />
</LinearLayout>

XML 文件中我們橫向放置了一個(gè)圖片和一個(gè)文本,對(duì)應(yīng)的是游戲人物和提示語(yǔ),然后在點(diǎn)擊的時(shí)候彈出此樣式的 Toast。最終編譯運(yùn)行效果如下:

Toast 示例

5. 小結(jié)

本節(jié)我們學(xué)習(xí)了一種簡(jiǎn)單的消息提示方式,它適合于一些簡(jiǎn)短且不是太重要的消息,大多數(shù)情況下我們可以直接用靜態(tài)方法makeText來(lái)創(chuàng)建一個(gè) Toast,但是在一些特定場(chǎng)景下我們也可以通過(guò) API 設(shè)置它的邊界等樣式,或者直接自定義一個(gè) xml 布局讓它完全按自己的樣式去展示。