1 Star 0 Fork 0

yundashi / floatView

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

FloatView 安卓任意界面悬浮窗

特性:

1.支持拖动,提供自动贴边等动画

2.内部自动进行权限申请操作

3.可自由指定要显示悬浮窗的界面

4.应用退到后台时,悬浮窗会自动隐藏

5.支持权限申请结果、位置等状态监听

6.链式调用,简洁清爽

集成:

第 1 步、在工程的 build.gradle 中添加:

	allprojects {
		repositories {
			jcenter()
		}
	}

第 2 步、在应用的 build.gradle 中添加:

	dependencies {
	        implementation 'com.gitee.ka51:float-view:1.0'
	}

使用:

0.声明权限


     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

1.基础使用

        FloatBuilder.with(getApplicationContext())
                .setView(helpView)
                .setWidth(Screen.width, 0.2f) //设置悬浮控件宽高
                .setHeight(Screen.width, 0.2f)
                .setX(Screen.width, 0.8f) //设置控件初始位置
                .setY(Screen.height, 0.3f)
                .setMoveType(MoveType.slide,0,0)
                .setMoveStyle(500, new BounceInterpolator())
                .setOnViewStateListener(mViewStateListener) //监听悬浮控件状态改变
                .setOnPermissionListener(mPermissionListener) //监听权限申请结果
                .setDesktopShow(true) //桌面显示
                .build();

宽高及位置可设像素值或屏幕宽/高百分比,默认宽高为 wrap_content;默认位置为屏幕左上角,x、y 为偏移量。

2.指定界面显示(Activity必须继承OnFloatViewShowListener,否则默认显示),可以在BaseActivity中继承

              @Override
              public boolean floatViewShow(View view) {
                  TextView tvMsg = view.findViewById(R.id.fv_msg);
                  tvMsg.setText("这是 A 页面");
          
                  view.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          Toast.makeText(ActivityA.this, "我被点击了", Toast.LENGTH_SHORT).show();
                      }
                  });
                  return true;
              }

3.可拖动悬浮窗及回弹动画

              .setMoveType(MoveType.slide)
              .setMoveStyle(500, new AccelerateInterpolator())  //贴边动画时长为500ms,加速插值器

共提供 4 种 MoveType :

MoveType.slide : 可拖动,释放后自动贴边 (默认)

MoveType.back : 可拖动,释放后自动回到原位置

MoveType.active : 可拖动

MoveType.inactive : 不可拖动

setMoveStyle 方法可设置动画效果,只在 MoveType.slide 或 MoveType.back 模式下设置此项才有意义。默认减速插值器,默认动画时长为 300ms。

4.后续操作

        //手动控制
        FloatBuilder.get().show();
        FloatBuilder.get().hide();

        //修改显示位置
        FloatBuilder.get().updateX(100);
        FloatBuilder.get().updateY(100);

        //销毁
        FloatBuilder.destroy();

以上操作应待悬浮窗初始化后进行。

5.多个悬浮窗


        FloatBuilder
                .with(getApplicationContext())
                .setView(imageView)
                .build();

        FloatBuilder
                .with(getApplicationContext())
                .setView(button)
                .setTag("new")
                .build();


        FloatBuilder.get("new").show();
        FloatBuilder.get("new").hide();
        FloatBuilder.destroy("new");

创建第一个悬浮窗不需加 tag,之后再创建就需指定唯一 tag ,以此区分,方便进行后续操作。

Comments ( 0 )

Sign in for post a comment

About

悬浮提示窗口 spread retract
Java
Apache-2.0
Cancel

Releases (1)

All

Contributors

All

Activities

load more
can not load any more
Java
1
https://gitee.com/ka51/float-view.git
git@gitee.com:ka51/float-view.git
ka51
float-view
floatView
master

Search