<span style="font-size:24px;color:#ff6666;">调用的话直接调用begin方法就可以了,自己的笔记没有太多解释,代码很简单的</span>
package com.tianxia.administrator.chuanganqi;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by Administrator on 16-9-27.
*/
public class XuanFuKuang {
private WindowManager wManager;
private boolean is_begin;
private Context context;
private int w=140;
private int h=140;
private View view;
private WindowManager.LayoutParams wmParams;
private int startx;
private int starty;
private ImageView image001;
private TextView text;
public XuanFuKuang(Context context) {
this.context = context;
wManager = (WindowManager) context.getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(android.content.Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.xuanfukuang, null);
image001= (ImageView) view.findViewById(R.id.image002);
text= (TextView) view.findViewById(R.id.text001);
initView();
initparams();
}
private void initparams() {
wmParams = new WindowManager.LayoutParams();
// 设置窗口的类型这里如果设置成TYPE_PHONE,那么需要权限,设置成Type_tosast不需要权限就可运行,但是可能在19版本以下的
//版本会有问题,这里可以判断一下版本,大于19就用TYPE_TOAST
wmParams.type = WindowManager.LayoutParams.TYPE_TOAST;
// 设置行为选项
wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
wmParams.format = PixelFormat.RGBA_8888;
wmParams.dimAmount = 0.5f;
wmParams.gravity= Gravity.TOP|Gravity.LEFT;
wmParams.x=0;
wmParams.y=0;
// 设置悬浮窗口长宽数据
wmParams.width = w;
wmParams.height = h;
}
public synchronized void begin() {
if (!is_begin) {
is_begin = true;
wManager.addView(view, wmParams);
}
}
//关闭悬浮框
public synchronized void release() {
if (is_begin) {
wManager.removeView(view);
is_begin = false;
}
}
/**
* 返回是否开启
*/
public boolean isBegin(){
return is_begin;
}
private void setParms(int x,int y){
wmParams.x=x;
wmParams.y=y;
}
private void initView() {
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getRawX();
float y = event.getRawY();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
startx= (int) event.getX();
starty= (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
setParms((int) x-startx, (int) y-starty);
wManager.updateViewLayout(view, wmParams);
break;
}
return true;
}
});
}
public void xuanzhuan(float start,float end,String str){
ObjectAnimator.ofFloat(image001, "rotation", start, end)//
.setDuration(100)//
.start();
text.setText(str+"");
}
}