仿iPhone的AssistiveTouch 悬浮辅助球工具

用过iphone的朋友都知道,iPhone有个圆球辅助工具,它漂浮在你的手机屏幕(在任何APP之上),你可以将它移动到任何地方,它叫做AssistiveTouch,本篇模拟该软件实现一个小案例,主要是实现它的界面,首先来看看实现的效果吧:

仿iPhone的AssistiveTouch 悬浮辅助球工具

拖动小圆球:

仿iPhone的AssistiveTouch 悬浮辅助球工具

点击弹出pop窗口:

仿iPhone的AssistiveTouch 悬浮辅助球工具

为了让辅助工具一直悬浮在窗口之上,这里使用的机制是通过在程序初始化是,启动一个service,在service的onCreate() 函数中使用LayoutInflater来加载一个view,而这个view就是辅助球的布局文件:floatball.xml,然后对它进行onclick事件的监听,setOnClickListener监听到辅助球点击事件之后,就创建一个PopupWindow,弹出如上的菜单界面,大体的实现就是这样。

其实,实现窗口悬浮于最前面的一个重要属性是:WindowManager.LayoutParams.TYPE_PHONE

我们只要将WindowManager.LayoutParams的type属性设置为 WindowManager.LayoutParams.TYPE_PHONE就可以实现悬浮最前面。

工程目录结构:

仿iPhone的AssistiveTouch 悬浮辅助球工具

部分代码解析:

MyApplication.java:

package com.tyd.floatball.util;

import Android.app.Application;
import android.view.WindowManager;

public class MyApplication extends Application {

private WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();

public WindowManager.LayoutParams getMywmParams() {
  return wmParams;
 }
 
}

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d94740d8bf083cb8bed78cebbe080671.html