Code Monkey home page Code Monkey logo

floatmenusample's Introduction

FloatMenuSample

[ Download ]

crosg/FloatMenuSample transfer from yiming/FloatMenuSample

GIF

GRADLE:

compile 'com.yw.game.floatmenu:FloatMenu:2.0.1'

android float menu in app

权限 compatibility & permissions

无权限需求,支持 api 11 ++

for use:

使用示例 see sample

MainActivity

1:

mFloatMenu = new FloatLogoMenu.Builder()
                .withActivity(mActivity)
              //  .withContext(mActivity.getApplication())//这个在7.0(包括7.0)以上以及大部分7.0以下的国产手机上需要用户授权,需要搭配<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
                .logo(BitmapFactory.decodeResource(getResources(),R.drawable.yw_game_logo))
                .drawCicleMenuBg(true)
                .backMenuColor(0xffe4e3e1)
                .setBgDrawable(this.getResources().getDrawable(R.drawable.yw_game_float_menu_bg))
                //这个背景色需要和logo的背景色一致
                .setFloatItems(itemList)
                .defaultLocation(FloatLogoMenu.RIGHT)
                .drawRedPointNum(false)
                .showWithListener(new FloatMenuView.OnMenuClickListener() {
                    @Override
                    public void onItemClick(int position, String title) {
                        Toast.makeText(MainActivity.this, "position " + position + " title:" + title + " is clicked.", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void dismiss() {

                    }
                });

2:

mFloatMenu = new FloatLogoMenu.Builder()
        		.withActivity(mActivity)
                .logo(R.drawable.yw_image_float_logo)
                .backMenuColor(0xffe4e3e1)
                .drawCicleMenuBg(true)
                .setFloatItems(itemList)
                .defaultLocation(FloatLogoMenu.RIGHT)
                .drawRedPointNum(false)
                .showWithListener(new FloatMenuView.OnMenuClickListener() {
    @Override
    public void onItemClick(int position, String title) {
        Toast.makeText(MainActivity.this, "position " + position + " title:" + title + " is clicked.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void dismiss() {

    }
});

3: 以下方法供自定义:

可将 BaseFloatDailog 文件拷贝出来直接使用

    通过实现接口的形式自定义 
    BaseFloatDailog  mBaseFloatDailog = new BaseFloatDailog.FloatDialogImp(this, new BaseFloatDailog.GetViewCallback() {});

    或通过继承的形式自定义:
    
     public class MyFloatDialog extends BaseFloatDailog {
        ....         
    }

更新日志

UPDATE LOG:

  • 1.+ 桌面或应用内悬浮窗 (removed)

      compile 'com.yw.game.floatmenu:FloatMenu:1.0.0'
    
  • 2.0.0 重构版,应用内悬浮窗

      compile 'com.yw.game.floatmenu:FloatMenu:2.0.0'
    
       //2.0.0版使用windows.addContentView接口,在unity3D游戏引擎需要开启该选项
          <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
    
  • 2.0.1 可选择支持出现在桌面(需权限),应用内无权限需要。

      移除windows.addContentView接口
      出现在桌面的话需要:
      使用全局上下文  .withContext(mService.getApplication())
      并配合权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    

License

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.

floatmenusample's People

Contributors

bryant1410 avatar fanofdemo avatar longtaoge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

floatmenusample's Issues

2.0.1不能用

import com.yw.game.floatmenu.customfloat.BaseFloatDialog;
不能导入,没有customfloat了。

建议规范下代码

对于有代码洁癖的人简直了,单词很多都没拼对,建议规范一下会更好

MyFloatDialog 的构造方法接收的是个空上下文

public class MyFloatDialog extends BaseFloatDailog {

private Activity mContext;

public MyFloatDialog(Activity context) {
    super(context);
    this.mContext=context;
}

@Override
protected View getLeftView(LayoutInflater inflater, View.OnTouchListener touchListener) {

// ResourceUtil.getLayoutId(mContext,"layout_menu_left")
// int identifier = mContext.getResources().getIdentifier("layout_menu_left", "layout",
// mContext.getPackageName());
// Log.e(">>>>>>>>>>2>",identifier+">>1>>>");
Toast.makeText(mContext,"haha",Toast.LENGTH_SHORT).show();//报空指针,是因为没有上下文,是个空引用
View view = inflater.inflate(R.layout.layout_menu_left, null);
ImageView leftLogo = (ImageView) view.findViewById(R.id.logo);
leftLogo.setOnTouchListener(touchListener);
return view;
}

悬浮框如何在整个应用内使用

1:按照demo使用只会在MainActivity内有效果,切换Activity没有效果
2:按照每个Activity都初始化一次,并不能共享浮动框的位置.

是我使用的方式不对吗...有啥好办法,我想让悬浮框出现在整个应用内,请问有什么好的处理方式吗

建议优化一下api,不然引用起来非常麻烦,具体建议如下:

1.增加拖动位置后的位置信息保存;以免影响下个页面使用;(如果在onPause中不 destoryFloat)

当有多个页面使用时,如果一个页面拖拽图标到了新的位置,但方法私有,也没有提供保存位置的方法,下一个页面打开时,其实还是原来的位置,而不是上个页面拖拽后的位置。

2.增加或设置关闭菜单列表的方法;
或设置openMenu() 方法为public,这样可在点击图标后,手动调用它,关闭图标列表,而不是还得再点击logo才能关闭。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.