本文共 3122 字,大约阅读时间需要 10 分钟。
通常我们使用Toast的时候可能会直接这样写:
Toast.makeText(context, text, duration).show();
这样写通常会有这样一个问题:新Toast要等上一次Toast结束后才能显示出来
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); ToastMgr.builder.init(getApplicationContext()); } public enum ToastMgr{ builder; private View view; private TextView tv; private Toast toast; /** * 初始化Toast * @param context */ public void init(Context context){ view = LayoutInflater.from(context).inflate(R.layout.toast_view, null); tv = (TextView) view.findViewById(R.id.toast_textview); toast = new Toast(context); toast.setView(view); } /** * 显示Toast * @param content * @param duration Toast持续时间 */ public void display(CharSequence content , int duration){ if (content.length()!=0) { tv.setText(content); toast.setDuration(duration); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } } }}
public class Utils { /** * 显示toast * @param content 内容 * @param duration 持续时间 */ public static void toast(String content , int duration){ if (content == null) { return; }else { MyApplication.ToastMgr.builder.display(content, duration); } } /** * 显示默认持续时间为short的Toast * @param content 内容 */ public static void toast(String content){ if (content == null) { return; }else { MyApplication.ToastMgr.builder.display(content, Toast.LENGTH_SHORT); } }}
我们在Activity中使用Toast的几率是非常大的,所以我们在Activity中每次使用Toast的时候都要Utils.toast() , 这样还是有点麻烦,所以我们可以在BaseActivity中进一步封装一下
public class BaseActivity extends Activity{ public void toast(String content){ Utils.toast(content); } public void toast(String content , int duration){ Utils.toast(content, duration); }}
这样就非常方便了,我们可以看看Toast是否可以快速刷新
public class MyActivity extends BaseActivity implements OnClickListener{ private Button mButton1; private Button mButton2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_activity); initViews(); registerListener(); } private void registerListener() { mButton1.setOnClickListener(this); mButton2.setOnClickListener(this); } private void initViews() { mButton1 = (Button) findViewById(R.id.button1); mButton2 = (Button) findViewById(R.id.button2); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: toast("Button1"); break; case R.id.button2: toast("Button2"); break; } }}
版权声明:欢迎转载,转载请注明出处http://blog.csdn.net/nugongahou110