可移动悬浮窗口实现

来源:互联网 发布:手持机gps数据采集器 编辑:程序博客网 时间:2024/04/30 15:11

先直接上代码:(代码中有少量的注解,但都是实现功能的关键)

接口ViewManager中定义了addView、reMoveView、updateView方法,WindManager实现了ViewManager但是没有直接去实现这三个方法,间接的交给WindowManagerGlobal去实现addView、reMoveView、updateView方法。

package com.example.andyshangguan.test_windowmnanger;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;import android.graphics.PixelFormat;import android.os.Bundle;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.ViewGroup;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;import android.widget.Toast;@SuppressLint("ServiceCast")public class MainActivity extends Activity {    private View windowView;    private LayoutInflater inflater;    private WindowManager.LayoutParams wL;    private WindowManager windowManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {       // inflater = getLayoutInflater();        inflater= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);        windowView = inflater.inflate(R.layout.layout_showwindow, null);        //(ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content));        windowView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Toast.makeText(MainActivity.this, "windowView", Toast.LENGTH_SHORT).show();            }        });        windowView.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                //getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标                float rawx = event.getRawX() - v.getMeasuredWidth() / 2;                float rawy = event.getRawY() - v.getMeasuredHeight() / 2;                switch (event.getAction()) {                    case MotionEvent.ACTION_MOVE:                        Log.e("info", " event.getX()====" + event.getRawX());                        Log.e("info", " event.getY()====" + event.getRawY());                        wL.x = (int) rawx;                        wL.y = (int) rawy;                        windowManager.updateViewLayout(v, wL);                        break;                    default:                        break;                }                return false;            }        });        wL = new WindowManager.LayoutParams(LayoutParams.WRAP_CONTENT,                //TYPE_TOAST类型系统是不需要权限的。如果申明为TYPE_SYSTEM_XXX权限,在AndroidManifest.xml申明权限//参考:http://www.jianshu.com/p/167fd5f47d5c?utm_campaign=maleskine&utm_content=note&utm_medium=writer_share&utm_source=weibo                LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_TOAST, 0, PixelFormat.TRANSPARENT);        wL.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL                | LayoutParams.FLAG_NOT_FOCUSABLE                | LayoutParams.FLAG_SHOW_WHEN_LOCKED;        wL.gravity = Gravity.LEFT | Gravity.TOP;        wL.x = 100;        wL.y = 300;        windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);    }//在布局文件中直接使用的onClik方法    public void showWindow(View v) {        switch (v.getId()) {            case R.id.showWindow:                windowManager.addView(windowView, wL);                break;            default:                break;        }    }}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 离职前请假不批怎么办 酷派x7无限重启怎么办 钢铁雄心3资源多怎么办 汽车智能钥匙没电了怎么办 辐射3食物有辐射怎么办 辐射3玩起来很卡怎么办 辐射3多余的瓶盖怎么办 辐射4开锁太快怎么办 极度恐慌3没子弹怎么办 辐射3道德值低怎么办 辐射3任务做完了怎么办 极限竞速6闪退怎么办 两个睾丸都碎了怎么办 快递退回去了钱怎么办 想登录老公微信怎么办 养狗家里味道大怎么办 实在不想养狗了怎么办 培训完不想干了怎么办 干了几天想离职怎么办 药流开始流血了怎么办 药流期间同房了怎么办 想学韩语可是没基础怎么办 鞋子多买了一双怎么办 胳膊抻着了怎么办妙招 胳膊抻筋了 很疼怎么办 干活胳膊抻筋了怎么办 胳膊上的筋扭了怎么办 一岁宝宝脖子歪怎么办 3岁宝宝轻微斜颈怎么办 2岁宝宝轻微斜颈怎么办 肩膀劳损痛的厉害怎么办 颈后面有个囊肿怎么办 扭腰了怎么办有偏方吗 跑步机点加油了怎么办 高二了英语30分怎么办 苍蝇往人身上飞怎么办 25岁了写字好丑怎么办 我字写得超难看怎么办 高三体检有纹身怎么办 快高考了有纹身怎么办 艺考身上有纹身怎么办