Android之十一Toast 自訂Toast的實現方法,及其說明

來源:互聯網
上載者:User

標籤:

Android Toast 自訂Toast的實現方法,及其說明 Android Toast用於在手機螢幕上向使用者顯示一條資訊,一段時間後資訊會自動消失。資訊可以是簡單的文本,也可以是複雜的圖片及其他內容(顯示一個view)。 
1.簡單用法
Toast.makeText(midlet.getApplicationContext(), "使用者名稱不可為空", Toast.LENGTH_LONG).show();
2.自訂顯示位置效果
代碼
toast = Toast.makeText(getApplicationContext(),
     "自訂位置Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
   toast.show(); 
3.帶圖片效果 
代碼
<span style="font-size:14px;">toast=Toast.makeText(MainActivity.this, "你好"+name, Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);   LinearLayout toastView = (LinearLayout) toast.getView();   toastView.setBackgroundColor(R.layout.toast_hud);   ImageView imageCodeProject = new ImageView(MainActivity.this);   imageCodeProject.setImageResource(R.drawable.pii);   toastView.addView(imageCodeProject, 0);   toast.show();</span>

三、常量
 
       int  LENGTH_LONG
 持續顯示視圖或文本提示較長時間。該時間長度可定製。      setDuration(int)
int  LENGTH_SHORT持續顯示視圖或文本提示較短時間。該時間長度可定製。該值為預設值。
四、建構函式
     public Toast (Context context) 構造一個空的 Toast 對象。在調用 show() 之前,必須先調用 setView(View)。
(譯者註:只有使用setView(View)的時候,才使用new Toast(Content content)來得到Toast對象,否則必須用makeText()方法來建立toast對象,並且
這種方式獲得Toast對象不能使用setText()方法。)
       參數 context    使用的上下文。通常是你的 Application 或 Activity 對象。 

五、公用方法
 
public int cancel()
     如果視圖已經顯示則將其關閉,還沒有顯示則不再顯示。一般不需要調用該方法。正常情況下,視圖會在超過存續期間後消失。
 
public int getDuration()返回存續期間  請參閱 setDuration(int)

public int getGravity() 取得提示資訊在螢幕上顯示的位置。請參閱Gravity setGravity()

public float getHorizontalMargin()返回橫向欄外空白。

public float getVerticalMargin()返回縱向欄外空白。

public ViewgetView()返回 View 對象。請參閱setView(View)
 public int getXOffset()返回相對於參照位置的橫向位移像素量。
        Toast msg = Toast.makeText(Main.this, "Message", Toast.LENGTH_LONG);                   msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2);        
msg.show();
 
public int getYOffset()
返回相對於參照位置的縱向位移像素量。
public static ToastmakeText(Context context, int resId, int duration)
產生一個從資源中取得的包含文本視圖的標準 Toast 對象。
  參數context
使用的上下文。通常是你的Application或Activity對象。
resId
要使用的字串資源ID,可以是已格式化文本。
duration
該資訊的存續期間。值為LENGTH_SHORT或LENGTH_LON異常
當資源未找到時拋異常Resources.NotFoundException 
public static ToastmakeText(Context context, CharSequence text, int duration)
產生一個包含文本視圖的標準 Toast 對象。
參數context
使用的上下文。通常是你的Application或Activity對象。
resId要顯示的文本,可以是已格式化文本。
duration 該資訊的存續期間。值為LENGTH_SHORT或LENGTH_LONG
   
public void setDuration(int duration)
設定存續期間。//注意:設定過大不起作用,duration的實際可用最大值為3500,即最多隻能顯示3.5s
    請參閱LENGTH_SHORT           LENGTH_LONG
 
public void setGravity(int gravity, int xOffset, int yOffset)
設定提示資訊在螢幕上的顯示位置。
(譯者註:自訂Toast的顯示位置,例如toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0)可以把Toast定位在左上方。Toast提示的位置xOffset:大於0向右移,小於0向左移)
 請參閱Gravity   getGravity() 
public void setMargin(float horizontalMargin, float verticalMargin)
設定視圖的欄外空白。
    參數horizontalMargin         容器的邊緣與提示資訊的橫向空白(與容器寬度的比)。
           verticalMargin             容器的邊緣與提示資訊的縱向空白(與容器高度的比)。
public void setText(int resId)
更新之前通過 makeText() 方法產生的 Toast 對象的常值內容。
    參數 resId      為 Toast 指定的新的字串資源ID。
 public void setText(CharSequence s)
更新之前通過 makeText() 方法產生的 Toast 對象的常值內容。
    參數 s   為 Toast 指定的新的文本。
public void setView(View view)
設定要顯示的 View 。
(譯者註:注意這個方法可以顯示自訂的toast視圖,可以包含映像,文字等等。是比較常用的方法。)
   
 具體實現:
MainActivity.java
<span style="font-size:14px;">package com.example.sahello1;import android.R.color;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.view.Gravity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {     private TextView  btnClick;     private EditText  etName;    private  Toast toast=null;@SuppressLint("ResourceAsColor")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnClick= (TextView) findViewById(R.id.btnClick);etName=(EditText) findViewById(R.id.edName);btnClick.setOnClickListener(new OnClickListener() {public void onClick(View v) {String name=etName.getText().toString();/*toast=Toast.makeText(MainActivity.this, "你好"+name, Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);   LinearLayout toastView = (LinearLayout) toast.getView();   toastView.setBackgroundColor(R.layout.toast_hud);   ImageView imageCodeProject = new ImageView(MainActivity.this);   imageCodeProject.setImageResource(R.drawable.pii);   toastView.addView(imageCodeProject, 0);   toast.show();*/MyToast.myTosat(MainActivity.this, R.drawable.pii, "顯示圖片"+name, 0);        //Toast1.midToast(MainActivity.this, "顯示圖片"+name, Toast.LENGTH_LONG);}});}}</span>
MyToast.java
<span style="font-size:14px;">package com.example.sahello1;import com.example.sahello1.R.drawable;import android.R.color;import android.content.Context;import android.content.res.Resources;import android.graphics.Color;import android.graphics.drawable.Drawable;import android.view.Gravity;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class MyToast {    public static void myTosat(Context context , int imageId ,String content , int duration){        //new一個toast傳入要顯示的activity的上下文        Toast toast = new Toast(context);        //顯示的時間        toast.setDuration(duration);        //顯示的位置        toast.setGravity(Gravity.BOTTOM, 20, 500);        //重新給toast進行布局        LinearLayout toastLayout = new LinearLayout(context);        toastLayout.setOrientation(LinearLayout.HORIZONTAL);        toastLayout.setGravity(Gravity.CENTER_VERTICAL);               toastLayout.layout(100, 100, 50,  20);                           ImageView imageView = new ImageView(context);        imageView.setImageResource(imageId);        //把imageView添加到toastLayout的布局當中        toastLayout.addView(imageView);               TextView textView = new TextView(context);        textView.setText(content);       textView.setBackgroundColor(Color.GRAY);                Resources resources=context.getResources();         Drawable drawable=resources.getDrawable(R.drawable.bg_to);                        textView.setBackgroundDrawable(drawable);        //把textView添加到toastLayout的布局當中        toastLayout.addView(textView);       // toastLayout.setBackgroundColor(Color.RED);               //把toastLayout添加到toast的布局當中        toast.setView(toastLayout);        toast.show();    }}</span>
UI布局 activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"    android:background="@drawable/picture" >    <EditText        android:id="@+id/edName"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:background="@android:drawable/edit_text"        android:drawableLeft="@drawable/pii"        android:drawablePadding="10dp"        android:ems="10"        android:text="請輸入" >        <requestFocus />    </EditText>    <TextView        android:id="@+id/tvNamePrompt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_above="@+id/edName"        android:layout_centerHorizontal="true"        android:text="@string/tvNamePrompt"        android:textSize="20dp" />    <TextView        android:id="@+id/btnClick"        android:layout_width="80dp"        android:layout_height="40dp"        android:layout_alignRight="@+id/tvNamePrompt"        android:layout_below="@+id/edName"        android:layout_marginTop="27dp"        android:background="@drawable/login_btn_bg"        android:gravity="center"        android:paddingBottom="10dp"        android:paddingTop="10dp"        android:text="點  擊"        android:textColor="#FFFFFF"        android:textSize="18sp" /></RelativeLayout>
login_btn_bg.xml  按鈕效果xml
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" >    <item android:drawable="@drawable/mc_btn_top_pressed" android:state_pressed="true"/>    <!-- pressed -->    <item android:drawable="@drawable/mc_btn_top_pressed" android:state_selected="true"/>    <!-- focused -->    <item android:drawable="@drawable/mc_btn_top_unpressed"/>    <!-- default -->    </selector></span>


Android之十一Toast 自訂Toast的實現方法,及其說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.