Android 悬浮窗口
来源:互联网 发布:mac sleep 时间 编辑:程序博客网 时间:2024/04/30 22:15
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);}}}
0 0
- Android中悬浮窗口
- android 悬浮窗口
- android 悬浮窗口
- Android悬浮窗口基本知识
- android 悬浮窗口
- Android中悬浮窗口
- android 悬浮窗口
- Android 中悬浮窗口
- Android中悬浮窗口
- android 悬浮窗口
- Android悬浮窗口
- Android 悬浮窗口
- Android中悬浮窗口
- Android 悬浮窗口
- 实现android悬浮窗口
- android悬浮窗口
- Android实现悬浮窗口
- android 桌面悬浮窗口
- 如何从html格式文件中获取M3u8的接口
- LeetCode:Interleaving String
- 求二叉树的节点总数及树的高度
- 自写的SQLite保存本地缓存
- java小结1
- Android 悬浮窗口
- 点阵字库的显示原理
- http post get请求
- RESTful API 设计指南
- MAVEN: Error assembling WAR: webxml attribute is required
- 关于EntityFramework在vs2012无法引用的问题
- LibGdx中使用非2的N次幂尺寸的图片
- python -_csv.Error: line contains NULL byte
- android对系统日历的读写操作开发经验的总结