来源: Android自定义toast – 飞天小鳄 – 博客园
在开发Android应用时,一般我们都会用toast来弹出提示消息,简单高 效。但是在不同的手机下toast显示的位置和样式可能会不同,而且系统自带的toast样式奇丑(个人觉得…),那么怎样定制一个个性的toast 提示框呢。。。 今天我就分享一下自己写的自定义toast,不足之处还请大家多多指点。(后边有效果图)
1、因为toast的特性,所以我们定义toast为单例模式。
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码"><img src="http://www.mikel.cn/wp-content/uploads/2015/05/copycode4.gif" alt="复制代码" /></a></span></div>
<pre>private static ZToast instance; //单例的
private View mToastView;//自定义toast view
private TextView mTextView;
private Boolean mIsShow;//记录状态 是否在显示
private Timer mTimer;//定时器
public synchronized static ZToast getInstance(Context context) {
if (instance == null)
instance = new ZToast(context);
return instance;
}
private ZToast(Context context) {
mIsShow = false;// 记录当前Toast的内容是否已经在显示
//这里初始化toast view
mToastView = LayoutInflater.from(context).inflate(R.layout.common_toast, null);
//用来提示的文字
mTextView = ((TextView) mToastView.findViewById(R.id.toast_text));
//初始化计数器
mTimer = new Timer();
// 设置布局参数
setParams();
}
2、接着设置布局样式:
private LayoutParams mParams;
private void setParams() {
mParams = new WindowManager.LayoutParams();//初始化
mParams.height = WindowManager.LayoutParams.WRAP_CONTENT; //高
mParams.width = WindowManager.LayoutParams.WRAP_CONTENT; //宽
mParams.format = PixelFormat.TRANSLUCENT;
mParams.windowAnimations = R.style.custom_animation_toast;// 设置进入退出动画效果
mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
mParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
mParams.gravity = Gravity.BOTTOM; //对其方式
mParams.y = 45; //下间距
}
3、自定义toast弹出风格 动画的效果 。 toast_styles.xml
</pre>
<pre><?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="custom.animation.toast" parent="@android:style/Animation.Toast">
<item name="android:windowEnterAnimation">@anim/toast_enter</item>
<item name="android:windowExitAnimation">@anim/toast_exit</item>
</style>
</resources></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码"><img src="http://www.mikel.cn/wp-content/uploads/2015/05/copycode4.gif" alt="复制代码" /></a></span>
Mikel

