EasyWindow

Android 悬浮窗框架,好用不解释

APACHE-2.0 License

Stars
1.4K

Toast Toaster

  • Gradle 7.0 build.gradle
allprojects {
    repositories {
        // JitPack https://jitpack.io
        maven { url 'https://jitpack.io' }
    }
}
  • Gradle 7.0 settings.gradle
dependencyResolutionManagement {
    repositories {
        // JitPack https://jitpack.io
        maven { url 'https://jitpack.io' }
    }
}
  • app build.gradle
android {
    //  JDK 1.8
    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    // https://github.com/getActivity/EasyWindow
    implementation 'com.github.getActivity:EasyWindow:10.62'
}

  • Java
//  Activity 
//  Application 
EasyWindow.with(this)
        .setContentView(R.layout.toast_hint)
        // 
        //.setDraggable()
        // 
        .setDuration(1000)
        // 
        //.setAnimStyle(android.R.style.Animation_Translucent)
        // 
        //.setOutsideTouchable(false)
        // 
        //.setBackgroundDimAmount(0.5f)
        .setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
        .setText(android.R.id.message, "")
        .setOnClickListener(android.R.id.message, new EasyWindow.OnClickListener<TextView>() {

            @Override
            public void onClick(EasyWindow<?> easyWindow, TextView view) {
                //  View 
                easyWindow.cancel();
                // Activity
                // easyWindow.startActivity(intent);
            }
        })
        .show();
  • Kotlin
EasyWindow.with(activity).apply {
    setContentView(R.layout.toast_hint)
    // 
    //setDraggable()
    // 
    setDuration(1000)
    // 
    //setAnimStyle(android.R.style.Animation_Translucent)
    // 
    //setOutsideTouchable(false)
    // 
    //setBackgroundDimAmount(0.5f)
    setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
    setText(android.R.id.message, "")
    setOnClickListener(android.R.id.message, EasyWindow.OnClickListener<TextView?> { easyWindow: EasyWindow<*>, view: TextView? ->
        //  View 
        easyWindow.cancel()
        // Activity
        // easyWindow.startActivity(intent);
    })
}.show()
EasyWindow.with(activity)
        .setContentView(R.layout.toast_hint)
        // 
        //.setDraggable()
        // 
        .setDuration(1000)
        // 
        //.setAnimStyle(android.R.style.Animation_Translucent)
        // 
        //.setOutsideTouchable(false)
        // 
        //.setBackgroundDimAmount(0.5f)
        .setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
        .setText(android.R.id.message, "")
        .setOnClickListener(android.R.id.message, EasyWindow.OnClickListener<TextView?> { easyWindow: EasyWindow<*>, view: TextView? ->
            //  View 
            easyWindow.cancel()
            // Activity
            // easyWindow.startActivity(intent);
        })
        .show()

  • Activity Activity Activity

  • Application Activity Activity.onCreate

public final class ActivityWindowLifecycle implements Application.ActivityLifecycleCallbacks {

    static void with(Application application) {
        application.registerActivityLifecycleCallbacks(new FloatingLifecycle());
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        EasyWindow.with(activity)
                .setView(R.layout.xxx)
                .show();
    }

    @Override
    public void onActivityStarted(Activity activity) {}

    @Override
    public void onActivityResumed(Activity activity) {}

    @Override
    public void onActivityPaused(Activity activity) {}

    @Override
    public void onActivityStopped(Activity activity) {}

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}

    @Override
    public void onActivityDestroyed(Activity activity) {}
}

API

// 
setWidth(int width)
// 
setHeight(int height)

// 
setGravity(int gravity)
// 
setXOffset(int px)
// 
setYOffset(int px)

// 
setOutsideTouchable(boolean touchable)
// 
setBackgroundDimAmount(float amount)

// 
addWindowFlags(int flags)
// 
removeWindowFlags(int flags)
// 
setWindowFlags(int flags)
// 
hasWindowFlags(int flags)

// 
setWindowType(int type)

//  WindowManager 
//  API  EasyWindow 
......
// 
EasyWindow.cancelAll()

// 
EasyWindow.cancelByClass(Class<? extends EasyWindow<?>> clazz)

// 
EasyWindow.cancelByTag(String tag)

// 
EasyWindow.recycleAll()

// 
EasyWindow.recycleByClass(Class<? extends EasyWindow<?>> clazz)

// 
EasyWindow.recycleByTag(String tag)

// 
EasyWindow.existShowing()

// 
EasyWindow.existShowingByClass(Class<? extends EasyWindow<?>> clazz)

// 
EasyWindow.existShowingByTag(String tag)

  • proguard-rules.pro
-keep class com.hjq.window.** {*;}

Android

Android Q 10047167

10.24 🐵👍:octocat:

License

Copyright 2019 Huang JinQun

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Related Projects