crosg/FloatMenuSample transfer from yiming/FloatMenuSample
低调公告:近期将更新 完全移除悬浮窗权限、增加3D动画
compile 'com.yw.game.floatmenu:FloatMenu:@lastVersion'
Download aar
Download jar
android float menu in app or launcher
兼容android2.3到android7.1(7.1已测) api 9 ++
API level <19 need permissions:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
API level >=19&&<=23 不需要权限
API level >23 需要运行时权限 canDrawOverlays
WindowManager.LayoutParams.Type设置如下:
//在android7.1以上系统需要使用TYPE_PHONE类型 配合运行时权限才能正常显示悬浮窗,需要引导用户开启悬浮窗权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (Build.VERSION.SDK_INT > 23) {
mWmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
} else {
mWmParams.type = WindowManager.LayoutParams.TYPE_TOAST;
}
} else {
mWmParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
运行时权限引导参考(Runtime Permission):FloatMenuInServiceActivity
for use:
@Override
public void onCreate() {
super.onCreate();
ArrayList<MenuItem> mMenuItems = new ArrayList<>();
for (int i = 0; i < menuIcons.length; i++) {
mMenuItems.add(new MenuItem(menuIcons[i], Const.MENU_ITEMS[i], android.R.color.black, this));
}
mFloatMenu = new FloatMenu.Builder(this).menuItems(mMenuItems).build();
mFloatMenu.show();
}
public void showFloat() {
if (mFloatMenu != null)
mFloatMenu.show();
}
public void hideFloat() {
if (mFloatMenu != null) {
mFloatMenu.hide();
}
}
public void destroyFloat() {
hideFloat();
if (mFloatMenu != null) {
mFloatMenu.destroy();
}
mFloatMenu = null;
}
private void showRed() {
if (!hasNewMsg) {
mFloatMenu.changeLogo(R.drawable.yw_image_float_logo, R.drawable.yw_menu_msg, 3);
} else {
mFloatMenu.changeLogo(R.drawable.yw_image_float_logo_red, R.drawable.yw_menu_msg_red, 3);
}
}
使用示例 see sample
修改菜单的样式,只需要更改res/layout/layout_yw_menu_item.xml 对应的文字大小,图片大小,背景颜色等等
- 设计图:
-
实现悬浮球占位到虚拟按键:
mWmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
UPDATE LOG:
- 0.0.1 init lib
- 0.0.2 修复bug
- 0.0.3 增加动态切换动画的接口
- 0.0.4 解决加载动画时出现的bug
- 0.0.5 修改开源协议
- 0.0.6 增加首次启动悬浮球透明度和变大动画
- 0.0.7 解决动画加载旋转不居中的问题
- 0.0.8 通过设置margin自动缩小悬浮球logo的大小
- 0.0.9 修复bug
- 1.0.0 解决当悬浮球在右边时菜单位置错乱
- 1.1.0 增加悬浮球所在service的代码样例
- 1.1.1 修复悬浮球不对虚拟按键占位问题
- todo 1.1.2 issues/22 ,完善代码注释(部分),view构造全部使用xml,便于代码的易维护可扩展性,悬浮view使用xml导入,悬浮菜单使用xml导入,支持菜单item的功能扩展,颜色大小,分割线等都可以在xml布局中调整
Copyright (c) 2016, Shanghai YUEWEN Information Technology Co., Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Shanghai YUEWEN Information Technology Co., Ltd. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY SHANGHAI YUEWEN INFORMATION TECHNOLOGY CO., LTD. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.





