最近赶项目比较忙,趁周末补点文章。
效果预览:
开发需求:
这个弹窗一般用于新消息展示,需要是全局的,所以采用WindowManager来做,可以显示在其他应用之上。
一般消息弹窗会在几秒内消息,否则会影响用户体验,所以还需要延时关闭。
消息弹出后要给用户选择的机会,所以用户可以手动移除弹窗,这里采用手势来达到取消显示的目的。
撸码:
1.先撸一个类,构造传入上下文,因为待会会用。
public class TitleTextWindow {
private Context mContext;
public TitleTextWindow(Context context) {
mContext = context;
}
}
2.抽取几个必要的方法,然后进行代码编写。
/**
* 向外部暴露显示的方法
*/
public void show(){
}
/**
* 向外部暴露关闭的方法
*/
public void dismiss(){
}
/**
* 视图创建方法
*/
private void createTitleView(){
}
3.将伪代码功能实现。
/**
* 向外部暴露显示的方法
*/
public void show(){
createTitleView();
animShow();
//3S后自动关闭
mHander.sendEmptyMessageDelayed(20, 3000);
}
/**
* 向外部暴露关闭的方法
*/
public void dismiss(){
animDismiss();
}
/**
* 视图创建方法
*/
private void createTitleView(){
//准备Window要添加的View
linearLayout = new LinearLayout(mContext);
final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.setLayoutParams(layoutParams);
View titleView = View.inflate(mContext, R.layout.header_toast, null);//这里是你弹窗的UI
// 为titleView设置Touch事件
linearLayout.setOnTouchListener(this);
linearLayout.addView(titleView);
// 定义WindowManager 并且将View添加到WindowManagar中去
wm = (WindowMa