2013年1月25日 星期五

[Android]Toast 快顯提示訊息製作(內含轉貼survey)

相關Survey:

Android应用开发学习—Toast使用方法大全




[Android]一個簡單的小互動 彈跳視窗AlertDialog 這篇裡面我曾經提到過Toast 相信用過android系統手機的一定看過這個應用,就直接開始吧!!

主程式:


public class MainActivity extends Activity {
//宣告全域變數
private EditText et;
private Button bt;
private String hello;
private Field field;   //在一般型我們不會用到field跟Object這兩個 等下會說明
private Object obj;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
                //設定view元件 並設定按鈕事件 呼叫showToast()
et = (EditText)this.findViewById(R.id.et);
bt = (Button)this.findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener(){
public void onClick(View v){
hello =  et.getText().toString();
showToast();
}});}
//上面的showToast();會呼叫底下這個method 來show"吐司"

private void showToast(){


//第一個參數為生命週期 這邊是整個應用摧毀_才被摧毀//第二個參數是需要顯示的內容第三個參數是顯示時間的長短 LENGTH_LONG為長 ;反之 LENGTH_SHORT為短 Toast toast = Toast.makeText(getApplicationContext(),hello+"您好!",Toast.LENGTH_LONG);


//toast.setDuration(Toast.LENGTH_LONG);// show的時間長短正規寫法 LONG長 SHORT短
// 3個屬性分別為Gravity,x座標,y座標
toast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP,0,100);
                toast.show();
執行結果1:輸入jason
 執行結果2:跑出jason的歡迎toast
會用到toast主要是希望跑一些訊息 讓使用者知道 但是又希望訊息自己消失 就可以考慮這個應用
在某個情況若我們不希望toast消失 該怎麼辦?
Survey:http://rritw.com/a/shujuku/Access/20111002/132463.html
程式碼主要是覆寫show的方法 讓他不會自動消失
底下的程式碼需要宣告

private Field field; 
private Object obj;


這兩個東西哦!

private void showToast(){
//設定顯示時間長短 LENGTH_SHORT, LENGTH_LONG 為長 LENGTH_SHORT, LENGTH_SHORT為短
Toast toast = Toast.makeText(getApplicationContext(),hello+"您好!",Toast.LENGTH_LONG);
//toast.setDuration(Toast.LENGTH_LONG);// show的時間長短正規寫法 LONG長 SHORT短
// 3個屬性分別為Gravity,x座標,y座標
toast.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP,0,100);

//仔細看 加在這邊  如果最底下有toast.show();記得註解掉
            try
{
   field = toast.getClass().getDeclaredField("mTN");
field.setAccessible(true);
Object obj = field.get(toast);
Method method = obj.getClass().getDeclaredMethod("show",null);
method.invoke(obj, null);
}
catch( Exception e){
}
try{
Method method = obj.getClass().getDeclaredMethod("hide",null);
method.invoke(obj, null);
}catch(Exception e){
}

若要他關掉可以寫一個button去呼叫底下的程式toast就會關掉了   
try
{
//  需要將前面程式碼中的obj變數變成類變數。這樣在多個地方就都可以呼叫訪問了
Method method =  obj.getClass().getDeclaredMethod("hide", null);
    method.invoke(obj, null);
}
catch (Exception e)
{
}

若要在土司裡面加圖片呢?我也沒試過 但是我有survey!


Survey: http://www.dotblogs.com.tw/abbee/archive/2010/11/10/19335.aspx

//設定圖片參照以下程式碼,還沒試過 但網路上survey到留著希望以後用的到
//ImageView view = new ImageView(this);
//view.setImageResource(R.drawable.圖片主檔名);//設定圖片
//toast.setGravity(Gravity.BOTTOM, 0, 0);//這裡可以決定圖要放哪個位置,從哪個位置起算
//toast.setView(view);
 //執行show之後 才會讓設定跑起來 也才會有toast的效果出現 這邊一定要加


此外,在toast中是無法加入按鈕進而定義點擊事件的!!!重要!!!




沒有留言:

張貼留言