Android实现悬浮窗口
来源:互联网 发布:oveplayer mac 编辑:程序博客网 时间:2024/05/01 02:32
Android悬浮窗口步骤
1新建FxService
package service;import android.app.Service;import android.content.Intent;import android.graphics.PixelFormat;import android.os.IBinder;import android.support.annotation.Nullable;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.widget.Button;import android.widget.LinearLayout;import wellray.fxdemo.R;public class FxService extends Service{ WindowManager mWindowManager; WindowManager.LayoutParams wmParams; LinearLayout mFloatLayout; Button mFloatView; boolean flag=true; private static final String TAG = "FloatWindowTest"; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate" ); createFloatView(); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); if(flag){ flag=false; mWindowManager.addView(mFloatLayout, wmParams); } } private void createFloatView() { //获取LayoutParams对象 wmParams = new WindowManager.LayoutParams(); //获取的是LocalWindowManager对象 mWindowManager = (WindowManager)getApplication().getSystemService(getApplication().WINDOW_SERVICE); ; //获取的是CompatModeWrapper对象 //mWindowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE); Log.i(TAG, "mWindowManager3--->" + mWindowManager); wmParams.type = WindowManager.LayoutParams.TYPE_PHONE; wmParams.format = PixelFormat.RGBA_8888;; wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; wmParams.gravity = Gravity.LEFT | Gravity.TOP; wmParams.x = 0; wmParams.y = 0; wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT; wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT; LayoutInflater inflater =LayoutInflater.from(getApplication()); mFloatLayout = (LinearLayout) inflater.inflate(R.layout.fx_layout, null); mFloatView = (Button)mFloatLayout.findViewById(R.id.button_f); //绑定触摸移动监听 mFloatView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { wmParams.x = (int)event.getRawX() - mFloatLayout.getWidth()/2; //25为状态栏高度 wmParams.y = (int)event.getRawY() - mFloatLayout.getHeight()/2 - 40; mWindowManager.updateViewLayout(mFloatLayout, wmParams); return false; } }); //绑定点击监听 mFloatView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /* Intent intent = new Intent( getActivity(), ResultActivity.class); startActivity(intent);*/ /* if(mFloatLayout!=null){ mWindowManager.removeView(mFloatLayout); flag=true; }*/ stopSelf(); } }); } @Override public void onDestroy() { super.onDestroy(); if(mFloatLayout != null) { //移除悬浮窗口 mWindowManager.removeView(mFloatLayout); flag=true; } }}
悬浮窗口布局文件R.id.fx_layout
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button_f" android:text="@string/app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
2 配置文件中加入权限和配置FxService
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <service android:name="service.FxService"/>
3启动FxService
Intent intent = new Intent(getActivity(), FxService.class); getActivity().startService(intent);
demo下载:http://download.csdn.net/detail/qq_17525769/9695640
0 0
- 实现android悬浮窗口
- Android实现悬浮窗口
- android WindowManager实现悬浮窗口
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现 .
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- Android 悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- android悬浮窗口的实现
- mybatis简记
- 图形绘制
- java 字符串split踩坑日记
- vs2013中项目依赖项的作用
- JMeter学习-002-JMeter环境配置
- Android实现悬浮窗口
- R 语言中的 箱线图介绍 boxplot
- HDU 2057 A + B Again(水)
- 博为峰Java技术题 ——JavaEE Servlet 国际化Ⅰ
- 【51nod1051】【最大子矩阵和】【动态规划】
- Http传输Header一览
- 自适应学习率调整:AdaDelta - Physcal
- pdo query() 函数 实现select语句
- IntelliJ IDEA中安装、配置以及使用Maven