daimajia / AndroidViewHover

An elegant way to show your menu or messages.
3.21k stars 722 forks source link

Android View Hover Build Status

In my opinion, jumping to a new activity to show your menu is a kind of wasting time and life.

So,

I think, we need a hover view, to show menu, to show messages.

Demo

Watch HD in YouTube.

Download Apk

Usage

Step0

Set up RenderScript

Step1

Gradle

dependencies {
    compile "com.android.support:support-v4:20.+"
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.easing:library:1.0.0@aar'
    compile 'com.daimajia.androidanimations:library:1.1.2@aar'
    compile 'com.daimajia.androidviewhover:library:1.0.4@aar'
}

Maven

    <dependency>
        <groupId>com.nineoldandroids</groupId>
        <artifactId>library</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>com.daimajia.androidanimation</groupId>
        <artifactId>library</artifactId>
        <version>1.1.2</version>
        <type>apklib</type>
    </dependency>
    <dependency>
        <groupId>com.daimajia.easing</groupId>
        <artifactId>library</artifactId>
        <version>1.0.0</version>
        <type>apklib</type>
    </dependency>
    <dependency>
        <groupId>com.daimajia.androidviewhover</groupId>
        <artifactId>library</artifactId>
        <version>1.0.4</version>
        <type>apklib</type>
    </dependency>

Eclipse

Step2

  1. Create an original view, and make sure it was wrapped by BlurLayout

    for example:

        <com.daimajia.androidviewhover.BlurLayout
                android:id="@+id/sample"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <ImageView
                    android:layout_centerInParent="true"
                    android:scaleType="fitXY"
                    android:src="https://github.com/daimajia/AndroidViewHover/raw/master/@drawable/kid"
                    android:layout_width="match_parent"/>
        </com.daimajia.androidviewhover.BlurLayout>

    Note: BlurLayout is entended from RelativeLayout. You can use the RelativeLayout rules to layout your view.

  2. Create a hover view, there is no rules to obey. Just please remember that this view will be stretched as large as the original view you have created.

  3. Bind a hover view to BlurLayout

        BlurLayout sampleLayout = (BlurLayout)findViewById(R.id.sample);
        View hover = LayoutInflater.from(mContext).inflate(R.layout.hover, null);
        sampleLayout.setHoverView(hover);

    and don't forget that you can add various animations just in one line code. For example:

        //View (R.id.heart) appear animation.
        sampleLayout.addChildAppearAnimator(hover, R.id.heart, Techniques.FlipInX);
        //View (R.id.heart) disappear animation.
        sampleLayout.addChildDisappearAnimator(hover, R.id.heart, Techniques.FlipOutX);

You can view the samples in my preset examples.

Animations

This project provides a lot of animations you can choose. Animations are from my another open-source project AndroidViewAnimations. And you can aslo using easing funcitons to make your animations more real. Please enjoy it.

Thanks

About me

A student in mainland China.

Welcome to offer me an internship. If you have any new idea about this project, feel free to contact me.