好了,如果你对前几个小例子里面的Toast完全掌握的话,那么我们现在来创建一个Toast的工具类,以便于开发的简便。
编写一个借口,定义好各种Toast以后,用一个ToastUtil类来实现这个借口,并实现里面的方法,整体实现起来也不是很难,具体了解一下代码就知道怎么回事了,代码资源我会写在最后面。
具体代码如下:
布局文件:
这里的布局文件只是测试用,还有写了一个自定义Toast时候的布局
主要的布局文件:
自定义xml文件:
Java代码:
Toast的接口:
package com.example.toastutil;
import android.content.Context;
import android.view.View;
/**
* Toast的抽象类,主要用来规范有哪些方法,以便于维护
*
*/
public interface ToastFunctions {
/**
* 直接显示Toast
*
* @param context
* 上下文
* @param text
* 文本信息
* @param duration
* 显示时长
*/
public void immediateToast(Context context, String text, int duration);
/**
* 自定义位置的Toast
*
* @param context
* 上下文
* @param text
* 文本信息
* @param duration
* 显示时长
* @param gravity
* 位置
*/
public void ToastLocation(Context context, String text, int duration,
int gravity);
/**
* 带图片的Toast
*
* @param context
* 上下文
* @param text
* 文本信息
* @param duration
* 显示时长
* @param resId
* 图片资源id
*/
public void ToastWithPic(Context context, String text, int duration,
int resId);
/**
* 自定义的Toast
*
* @param context
* 上下文
* @param text
* 文本信息
* @param duration
* 显示时长
* @param view
* 布局文件xml文件的view对象
*
* View的创建如下:
* //自定义Toast主要是利用LayoutInflater来实现
* LayoutInflater layoutInflater = getLayoutInflater();
* //加载一个布局文件,自定义的布局文件 View
* view = layoutInflater.inflate(layoutId,null);
*/
public void ToastBySelf(Context context, String text, int duration,
View view);
}
实现接口的类:
package com.example.toastutil;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
public class ToastUtil implements ToastFunctions {
private Toast toast = null;
@Override
public void immediateToast(Context context, String text, int duration) {
toast = Toast.makeText(context, text, duration);
toast.show();
}
@Override
public void ToastLocation(Context context, String text, int duration,
int gravity) {
Toast toast = Toast.makeText(context, text, duration);
toast.setGravity(gravity, 0, 0);
toast.show();
}
@Override
public void ToastWithPic(Context context, String text, int duration,
int resId) {
toast = Toast.makeText(context, text, duration);
// 通过Toast创建一个LinearLayout
LinearLayout layout = (LinearLayout) toast.getView();
// 创建一个ImageView对象,并添加到LinearLayout中
ImageView imageView = new ImageView(context);
imageView.setImageResource(resId);
// 添加
layout.addView(imageView);
// 显示Toast
toast.show();
}
@Override
public void ToastBySelf(Context context, String text, int duration, View view) {
// Toast
toast = new Toast(context);
// 设置Toast显示时长
toast.setDuration(duration);
// 设置Toast的View对象
toast.setView(view);
// 显示Toast
toast.show();
}
}
MainActivity也是测试类:
package com.example.toastutil;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_ToastDir).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new ToastUtil().immediateToast(MainActivity.this, "最基础的Toast", Toast.LENGTH_SHORT);
}
});
findViewById(R.id.btn_ToastPoi).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new ToastUtil().ToastLocation(MainActivity.this,"自定义位置的Toast", Toast.LENGTH_SHORT, Gravity.CENTER);
}
});
findViewById(R.id.btn_ToastWithPic).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new ToastUtil().ToastWithPic(MainActivity.this, "带图片的Toast", Toast.LENGTH_SHORT, R.drawable.ic_launcher);
}
});
findViewById(R.id.btn_ToastBySelf).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//自定义Toast主要是利用LayoutInflater来实现
LayoutInflater layoutInflater = getLayoutInflater();
//加载一个布局文件,自定义的布局文件 View
View view = layoutInflater.inflate(R.layout.layout_toast,null);
new ToastUtil().ToastBySelf(MainActivity.this, "自定义Toast", Toast.LENGTH_SHORT,view);
}
});
}
}
运行效果:
好了,如果你会了这个东西,差不多Toast的东西就可以告一段落了,Demo代码在下面
代码资源链接:
http://download.csdn.net/detail/u011539882/8490375