GithubHelp home page GithubHelp logo

lubricant's Introduction

Yet another dynamic blur library.

// root build.gradle
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

// app/build.gradle
repositories {
    implementation("com.github.Miha-x64:Lubricant:852f8498f1")
}

Motivation?

Most libraries use RenderScript which shows poor performance to me. Also, most of them use onPreDraw as invalidation listener catching all invalidations across the window.

Name?

In order to apply a post-effect, you need to lubricate Android SDK heavily. Also, in Russian, “blurry” and “lubricated” is the same word, as well as “unclear” or “smooth”.

Architecture

Layer 1: static blur

StackBlur class provides blurRgb and blurArgb methods for applying blur effect to an ARGB_8888 bitmap. For blurArgb it must be premultiplied which is almost always true.

The Stack Blur Algorithm by Mario Klingemann ported by Yahel Bouaziz found on StackOverflow is used and improved for better speed and less memory consumption.

Layer 2: DynamicBlur

This class is used to hold a bitmap, and manage downscaling, drawing, and blurring.

Layer 3: ViewBlurDrawable, PostEffectView

A ready-to-use drawable taking image from PostEffectView.

Just drop a PostEffectRecyclerView into layout and set rv.blurDrawable(…) as a background for some overlaid view. See MainLayout for examples.

Blur in Vector Drawables

Under construction.

Blur for VideoView?

Check out VidEffects library which allows you to apply a shader on a video. This is not enough for quality backdrop effect, so this challenge remains to me.

lubricant's People

Contributors

miha-x64 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.