Toast大全(五种情形)建立属于你自己的Toast
- 博客分类:?
- android进阶
?
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();??
完整代码
①Main.java
- 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;??
- ??
- ????????}??
- ??
- ????}??
- }??
②main.xml
- <?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??
- ????????android:layout_height="wrap_content"??
- ????????android:layout_width="fill_parent"??
- ????????android:text="自定义显示位置"??
- ????????android:id="@+id/btnSimpleToastWithCustomPosition"?/>??
- ????<Button??
- ????????android:layout_height="wrap_content"??
- ????????android:layout_width="fill_parent"??
- ????????android:id="@+id/btnSimpleToastWithImage"??
- ????????android:text="带图片"?/>??
- ????<Button??
- ????????android:layout_height="wrap_content"??
- ????????android:layout_width="fill_parent"??
- ????????android:text="完全自定义"??
- ????????android:id="@+id/btnCustomToast"?/>??
- ????<Button??
- ????????android:layout_height="wrap_content"??
- ????????android:layout_width="fill_parent"??
- ????????android:text="其他线程"??
- ????????android:id="@+id/btnRunToastFromOtherThread"?/>??
- ??
- </LinearLayout>??
③custom.xml
- <?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> ?
?