最近项目需要做个客服的,在任意界面都可以进入客服界面,首先想到的就是悬浮窗,在GitHub上找到了一个很不错的库
https://github.com/yhaolpz/FloatWindow
然后开始按照步骤一步步引入到自己的项目中来
最后在MainActivity 的onCreate() 方法中引入入initFloatMenu()
private void initFloatMenu() {
ImageView imageView = new ImageView(getApplicationContext());
imageView.setImageResource(R.drawable.menu);
FloatWindow
.with(getApplicationContext())
.setView(imageView)
.setWidth(Screen.width, 0.16f) //设置悬浮控件宽高
.setHeight(Screen.width, 0.16f)
.setX(Screen.width, 0.8f)
.setY(Screen.height, 0.4f)
.setMoveType(MoveType.slide,0,0)
.setMoveStyle(500, new BounceInterpolator())
.setFilter(true,MainActivity.class)
.setDesktopShow(false)
.build();
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyUtils.showMenuFloat(new MInterFaceUtils.CallBack() {
@Override
public void success(Object o) {
}
@Override
public void fail(Object o) {
}
});
}
});
}
然后运行,一切似乎特别平静,可是当APK运行起来以后,我发现那个悬浮窗显示一秒钟,然后马上消失!
杀掉重启还是这样,晕,然道是我权限没有给,查看发现悬浮窗的权限已经打开,所有的配置都正确。
折腾了一段时间后,我进入项目例子中,发现初始化是在Application中做的,我把initFloatMenu() 这段初始化的代码放入了 Application 的onCreate() 方法中,重新运行,
APP启动以后,嘻嘻,一切正常,悬浮窗正常显示。