package com.z.c;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;
/**
* Created by z on 2016/5/9.
*/
public class CustomToast {
private Context mContext;
private WindowManager mWM;
private View mView;
private TextView mTvAddress;
private int mStartX;
private int mStartY;
private WindowManager.LayoutParams mParams;
/**
* 初始化toast
*
* @param context
*/
public void initToast(Context context) {
mContext = context;
mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
mParams = new WindowManager.LayoutParams();
mParams.windowAnimations = R.style.dialog_anim;
mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.format = PixelFormat.TRANSLUCENT; // 显示效果
//如果设置为这个值:TYPE_SYSTEM_ALERT,那么
mParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
mParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// |WindowManager.LayoutParams.FLAG_FULLSCREEN
// |WindowManager.LayoutParams. FLAG_WATCH_OUTSIDE_TOUCH;
//不允许获得焦点,toast的通性
// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
//不允许接收触摸事件
// | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
}
/**
* 显示toast
*
* @param context
* @param address
*/
public void showCustomToast(Context context, String address) {
initToast(context);
mView = View.inflate(mContext, R.layout.view_toast_address, null);
mTvAddress = (TextView) mView.findViewById(R.id.toast_tv_address);
mTvAddress.setText(address);
mView.setBackgroundColor(Color.BLUE);
mView.setLayoutParams(mParams);
//mView.setAnimation(R.animator.ani);
mTvAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,"hah",0).show();
Log.d("xii","");
}
});
mView.setOnTouchListener(new View.OnTouchListener() {
int lastX, lastY;
int paramX, paramY;
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
paramX = mParams.x;
paramY = mParams.y;
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY;
mParams.x = paramX + dx;
mParams.y = paramY + dy;
// 更新悬浮窗位置
mWM.updateViewLayout(mView, mParams);
break;
}
return true;
}
});
mWM.addView(mView, mParams);
}
/**
* 隐藏toast
*/
public void hideCustomToast() {
if (mView != null) {
if (mView.getParent() != null) {
mWM.removeView(mView);
}
mView = null;
}
}
}