撸了一个支持系统级、Activity 级、ViewGroup 级拖动控件的库

2019-07-17 00:00:38 +08:00
 hzw1199

https://github.com/hzw1199/FloatingView

来这儿吆喝一波 手指拖动的库已经很多了,但是这个库的亮点是支持系统级、Activity 级、ViewGroup 级三种模式,满足各种需求

FloatingView

Github

Features

Usage

Step 1

在 project 的 build.gradle 中加入以下语句:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

在 module 的 build.gradle 中加入以下语句:

dependencies {
    compile 'com.github.hzw1199:FloatingView:1.0.0'
}

Step 2

创建配置并显示

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();
}

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();
}

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

Step 3

点击事件

floatingView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        
    }
});

Proguard

无需配置混淆规则, consumerProguardFiles 已经配置过了

Tip

License

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.
4947 次点击
所在节点    Android
5 条回复
hyyou2010
2019-07-17 00:22:25 +08:00
赞,先 star 支持一下
wulikanhuaz
2019-07-17 15:42:26 +08:00
大佬厉害呀
hzw1199
2019-07-17 16:02:29 +08:00
@hyyou2010 就是喜欢反手就是一个 star 的同学
hzw1199
2019-07-17 16:02:55 +08:00
@wulikanhuaz 来个 star 吗(手动滑稽
wjh3936
2019-07-18 09:18:37 +08:00
骚年,看到我手中的 star 了吗(狗头

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/583604

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX