自定义Toast

分类:
 
android 开发基础(86) 
Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。
1.默认效果

代码
Toast.makeText(getApplicationContext(), "默认Toast样式",
     Toast.LENGTH_SHORT).show();
2.自定义显示位置效果

代码
toast = Toast.makeText(getApplicationContext(),
     "自定义位置Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
   toast.show();
 
3.带图片效果

 
代码
toast = Toast.makeText(getApplicationContext(),
     "带图片的Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
   LinearLayout toastView = (LinearLayout) toast.getView();
   ImageView imageCodeProject = new ImageView(getApplicationContext());
   imageCodeProject.setImageResource(R.drawable.icon);
   toastView.addView(imageCodeProject, 0);
   toast.show();
 
4.完全自定义效果

代码
LayoutInflater inflater = getLayoutInflater();
   View layout = inflater.inflate(R.layout.custom,
     (ViewGroup) findViewById(R.id.llToast));
   ImageView image = (ImageView) layout
     .findViewById(R.id.tvImageToast);
   image.setImageResource(R.drawable.icon);
   TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
   title.setText("Attention");
   TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
   text.setText("完全自定义Toast");
   toast = new Toast(getApplicationContext());
   toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
   toast.setDuration(Toast.LENGTH_LONG);
   toast.setView(layout);
   toast.show();
 
5.其他线程

 代码
new Thread(new Runnable() {
    public void run() {
     showToast();
    }
   }).start();
 
 
完整代码
1.Main,java
[java] view plain copy
package com.wjq.toast;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.view.Gravity;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.view.View.OnClickListener;  
import android.widget.ImageView;  
import android.widget.LinearLayout;  
import android.widget.TextView;  
import android.widget.Toast;  
  
public class Main extends Activity implements OnClickListener {  
 Handler handler = new Handler();  
  
 @Override  
 public void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.main);  
  
  findViewById(R.id.btnSimpleToast).setOnClickListener(this);  
  findViewById(R.id.btnSimpleToastWithCustomPosition).setOnClickListener(  
    this);  
  findViewById(R.id.btnSimpleToastWithImage).setOnClickListener(this);  
  findViewById(R.id.btnCustomToast).setOnClickListener(this);  
  findViewById(R.id.btnRunToastFromOtherThread).setOnClickListener(this);  
  
 }  
  
 public void showToast() {  
  handler.post(new Runnable() {  
  
   @Override  
   public void run() {  
    Toast.makeText(getApplicationContext(), "我来自其他线程!",  
      Toast.LENGTH_SHORT).show();  
  
   }  
  });  
 }  
  
 @Override  
 public void onClick(View v) {  
  Toast toast = null;  
  switch (v.getId()) {  
  case R.id.btnSimpleToast:  
   Toast.makeText(getApplicationContext(), "默认Toast样式",  
     Toast.LENGTH_SHORT).show();  
   break;  
  case R.id.btnSimpleToastWithCustomPosition:  
   toast = Toast.makeText(getApplicationContext(),  
     "自定义位置Toast", Toast.LENGTH_LONG);  
   toast.setGravity(Gravity.CENTER, 0, 0);  
   toast.show();  
   break;  
  case R.id.btnSimpleToastWithImage:  
   toast = Toast.makeText(getApplicationContext(),  
     "带图片的Toast", Toast.LENGTH_LONG);  
   toast.setGravity(Gravity.CENTER, 0, 0);  
   LinearLayout toastView = (LinearLayout) toast.getView();  
   ImageView imageCodeProject = new ImageView(getApplicationContext());  
   imageCodeProject.setImageResource(R.drawable.icon);  
   toastView.addView(imageCodeProject, 0);  
   toast.show();  
   break;  
  case R.id.btnCustomToast:  
   LayoutInflater inflater = getLayoutInflater();  
   View layout = inflater.inflate(R.layout.custom,  
     (ViewGroup) findViewById(R.id.llToast));  
   ImageView image = (ImageView) layout  
     .findViewById(R.id.tvImageToast);  
   image.setImageResource(R.drawable.icon);  
   TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);  
   title.setText("Attention");  
   TextView text = (TextView) layout.findViewById(R.id.tvTextToast);  
   text.setText("完全自定义Toast");  
   toast = new Toast(getApplicationContext());  
   toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);  
   toast.setDuration(Toast.LENGTH_LONG);  
   toast.setView(layout);  
   toast.show();  
   break;  
  case R.id.btnRunToastFromOtherThread:  
   new Thread(new Runnable() {  
    public void run() {  
     showToast();  
    }  
   }).start();  
   break;  
  
  }  
  
 }  
}  

 
2.main,xml
[html] view plain copy
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
 android:orientation="vertical" android:layout_width="fill_parent"  
 android:layout_height="fill_parent" android:padding="5dip" android:gravity="center">  
 <Button android:layout_height="wrap_content"  
  android:layout_width="fill_parent" android:id="@+id/btnSimpleToast"  
  android:text="默认"></Button>  
 <Button android:layout_height="wrap_content"  
  android:layout_width="fill_parent" android:text="自定义显示位置"  
  android:id="@+id/btnSimpleToastWithCustomPosition"></Button>  
 <Button android:layout_height="wrap_content"  
  android:layout_width="fill_parent" android:id="@+id/btnSimpleToastWithImage"  
  android:text="带图片"></Button>  
 <Button android:layout_height="wrap_content"  
  android:layout_width="fill_parent" android:text="完全自定义"  
  android:id="@+id/btnCustomToast"></Button>  
 <Button android:layout_height="wrap_content"  
  android:layout_width="fill_parent" android:text="其他线程"  
  android:id="@+id/btnRunToastFromOtherThread"></Button>  
  
</LinearLayout>  

 
3.custom.xml
[html] view plain copy
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout  
 xmlns:android="http://schemas.android.com/apk/res/android"  
 android:layout_height="wrap_content" android:layout_width="wrap_content"  
 android:background="#ffffffff" android:orientation="vertical"  
 android:id="@+id/llToast" >  
 <TextView  
  android:layout_height="wrap_content"  
  android:layout_margin="1dip"  
  android:textColor="#ffffffff"  
  android:layout_width="fill_parent"  
  android:gravity="center"  
  android:background="#bb000000"  
  android:id="@+id/tvTitleToast" />  
 <LinearLayout  
  android:layout_height="wrap_content"  
  android:orientation="vertical"  
  android:id="@+id/llToastContent"  
  android:layout_marginLeft="1dip"  
  android:layout_marginRight="1dip"  
  android:layout_marginBottom="1dip"  
  android:layout_width="wrap_content"  
  android:padding="15dip"  
  android:background="#44000000" >  
  <ImageView  
   android:layout_height="wrap_content"  
   android:layout_gravity="center"  
   android:layout_width="wrap_content"  
   android:id="@+id/tvImageToast" />  
  <TextView  
   android:layout_height="wrap_content"  
   android:paddingRight="10dip"  
   android:paddingLeft="10dip"  
   android:layout_width="wrap_content"  
   android:gravity="center"  
   android:textColor="#ff000000"  
   android:id="@+id/tvTextToast" />  
 </LinearLayout>  
</LinearLayout>  

posted @ 2016-05-03 12:15  gentspy  阅读(158)  评论(0编辑  收藏  举报