Android悬浮窗口
来源:互联网 发布:大数据技术之企业发展 编辑:程序博客网 时间:2024/04/30 20:19
FloatService:
package com.home.floatwindow;import android.app.Service;import android.content.Context;import android.content.Intent;import android.graphics.PixelFormat;import android.os.IBinder;import android.util.Log;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;import android.widget.ImageView;import android.widget.LinearLayout;import com.home.testfolatwindow.R;public class FloatService extends Service {private WindowManager wm;private WindowManager.LayoutParams wmlp;private LinearLayout layout;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();createFloatView();}private void createFloatView() {wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);wmlp = new WindowManager.LayoutParams();wmlp.type = LayoutParams.TYPE_PHONE;// 设置图片格式,效果为背景透明wmlp.format = PixelFormat.RGBA_8888;// 设置浮动窗口不可聚焦wmlp.flags = LayoutParams.FLAG_NOT_FOCUSABLE;wmlp.gravity = Gravity.LEFT | Gravity.TOP;wmlp.x = 0;wmlp.y = 0;wmlp.width = WindowManager.LayoutParams.WRAP_CONTENT;wmlp.height = WindowManager.LayoutParams.WRAP_CONTENT;layout = getLayout();wm.addView(layout, wmlp);layout.measure(View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));ImageView iv = (ImageView) layout.findViewById(1);iv.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Log.i("onClick", "onClick");}});iv.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// getRawX是触摸位置相对于屏幕的坐标,getX是相对于按钮的坐标wmlp.x = (int) event.getRawX() - layout.getMeasuredWidth() / 2;// 减25为状态栏的高度wmlp.y = (int) event.getRawY() - layout.getMeasuredHeight() / 2- 25;wm.updateViewLayout(layout, wmlp);return false;}});}private LinearLayout getLayout() {LinearLayout layout = new LinearLayout(this);ImageView iv = new ImageView(this);iv.setBackgroundResource((R.drawable.ic_launcher));iv.setId(1);layout.addView(iv);return layout;}@Overridepublic void onDestroy() {super.onDestroy();if (layout != null) {// 移除悬浮窗口wm.removeView(layout);}}}
权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
0 0
- Android中悬浮窗口
- android 悬浮窗口
- android 悬浮窗口
- Android悬浮窗口基本知识
- android 悬浮窗口
- Android中悬浮窗口
- android 悬浮窗口
- Android 中悬浮窗口
- Android中悬浮窗口
- android 悬浮窗口
- Android悬浮窗口
- Android 悬浮窗口
- Android中悬浮窗口
- Android 悬浮窗口
- 实现android悬浮窗口
- android悬浮窗口
- Android实现悬浮窗口
- android 桌面悬浮窗口
- JavaSe基础XX17——常用对象API-集合框架_1
- linux常用命令
- 保时捷贴膜后与出租撞衫 被误当为土豪出租车
- OpenCV基础篇之读取显示图片
- 【2014】【辛星】【php】【序言】2014年辛星PHP教程秋季班重磅来袭,期待您的关注
- Android悬浮窗口
- SQL总结(二)
- OpenCV基础篇之像素操作对比度调节
- POJ 3009 Curling 2.0 DFS
- 树的层遍历
- Remove Duplicates from Sorted List
- jQuery实现单击按钮遮罩弹出对话框(1)
- SQL总结(三)
- 关于在android onCreate()中不能获取控件宽度、大小等的解决办法