https://github.com/hzw1199/FloatingView
来这儿吆喝一波 手指拖动的库已经很多了,但是这个库的亮点是支持系统级、Activity 级、ViewGroup 级三种模式,满足各种需求
OverlaySystem
、 OverlayActivity
和 OverlayViewGroup
三种模式OverlaySystem
模式下可在其他 APP 上显示,自动申请权限OverlayActivity
模式下只在指定的 Activity 上显示OverlayViewGroup
模式下只在指定的 ViewGroup 上显示在 project 的 build.gradle 中加入以下语句:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
在 module 的 build.gradle 中加入以下语句:
dependencies {
compile 'com.github.hzw1199:FloatingView:1.0.0'
}
创建配置并显示
OverlaySystem
模式onCreate:
FloatingViewConfig config = new FloatingViewConfig.Builder()
.setPaddingLeft(paddingLeft)
.setPaddingTop(paddingTop)
.setPaddingRight(paddingRight)
.setPaddingBottom(paddingBottom)
.setGravity(gravity)
.build();
floatingView = new FloatingView(OverlaySystemActivity.this, R.layout.view_floating, config);
floatingView.showOverlaySystem();
onDestroy:
if (floatingView != null) {
floatingView.hide();
}
OverlayActivity
模式onAttachedToWindow:
FloatingViewConfig config = new FloatingViewConfig.Builder()
.setPaddingLeft(paddingLeft)
.setPaddingTop(paddingTop)
.setPaddingRight(paddingRight)
.setPaddingBottom(paddingBottom)
.setGravity(gravity)
.build();
floatingView = new FloatingView(OverlaySystemActivity.this, R.layout.view_floating, config);
floatingView.showOverlayActivity();
onDetachedFromWindow:
if (floatingView != null) {
floatingView.hide();
}
OverlayViewGroup
模式onCreate:
lyViewGroup.post(new Runnable() {
@Override
public void run() {
FloatingViewConfig config = new FloatingViewConfig.Builder()
.setPaddingLeft(paddingLeft)
.setPaddingTop(paddingTop)
.setPaddingRight(paddingRight)
.setPaddingBottom(paddingBottom)
.setGravity(gravity)
.setDisplayWidth(lyViewGroup.getWidth())
.setDisplayHeight(lyViewGroup.getHeight())
.build();
floatingView = new FloatingView(OverlaySystemActivity.this, R.layout.view_floating, config);
floatingView.showOverlayViewGroup(lyViewGroup);
}
});
onDestroy:
if (floatingView != null) {
floatingView.hide();
}
lyViewGroup
是用来放置 FloatingView 的 ViewGroup
点击事件
floatingView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
无需配置混淆规则, consumerProguardFiles
已经配置过了
The MIT License (MIT)
Copyright (c) 2017 AndroidGpsStatus
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.