1.1. 模仿土司实现一个在窗体中可以显示的ui
Toast源代码入手
① 创建xml显示布局
② 初始化WindowManager对象
③ addVeiw 显示 ,removeView 隐藏
④ 位置设置 WindowManager.LayoutParams mParams 对齐,配置大小...
权限
<!-- 添加归属显示窗口中 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
private View view;
// 窗口管理对象
private WindowManager wm;
private TextView tv_toast_address;
private WindowManager.LayoutParams params;
private void showAddressView(String outGoingNumber) {
String address = new AddressDao().getAddress(getBaseContext(), outGoingNumber);
System.out.println("address=" + address + ":" + outGoingNumber);
// Toast.makeText(getBaseContext(), address, 0).show();
// ① 创建xml显示布局
view = View.inflate(getBaseContext(), R.layout.toast_show_address1, null);
// ② 初始化WindowManager对象
tv_toast_address = (TextView) view.findViewById(R.id.tv_toast_address);
tv_toast_address.setText(address);
wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
// ③addVeiw 显示 ,removeView 隐藏
params = new WindowManager.LayoutParams();
// 配置View在顶级布局里的属性
// android:height=wrap_content
// 大小
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.MATCH_PARENT;
// 背景 TRANSLUCENT透明
params.format = PixelFormat.TRANSLUCENT;
// 动画
// params.windowAnimations =
// com.android.internal.R.style.Animation_Toast;
params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
// 特性
params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON//
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE //
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
wm.addView(view, params);
// ④ 位置设置 WindowManager.LayoutParams mParams 对齐,配置大小...
////Handler延时发送的效果
//new Handler().postDelayed(new Runnable() {//主线
//
//@Override
//public void run() {
//hide();
//
//}
//}, 3000);//时间
}
private void hide() {
if (view != null) {
//视图存放的布局 parent
if (view.getParent() != null) {
wm.removeView(view);
view = null;
}
}
}