Fetch the repository succeeded.
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 ,以此区分,方便进行后续操作。
Sign in for post a comment
Comments ( 0 )