Wie schreibt man einen ActionBar wie Google Play, die in blendet beim Scrollen machen

? Cristiana214 @ | Original: StackOverFlow
---

Wie können Sie transparente oder transluzente ActionBar wie Google Play, dass ein- und ausblenden beim Scrollen über windowActionBarOverlay ? Ich lese auch diese Artikel aus https://developer.android.com/training/basics/actionbar/overlaying.html

Überprüfen Sie die folgenden Screenshots

http://i.stack.imgur.com/vKaw3.png

Ich habe auch versucht diese http://stackoverflow.com/questions/6749261/custom-translucent-android-actionbar aber nicht funktioniert ...

---

Top 5 Antwort

1Tpec1j @

Bitte lesen Sie diesen Artikel : http://cyrilmottier.com/2013/05/24/pushing-the-actionbar-to-the-next-level/

Dort finden Sie beispielsweise zu finden und Übung über Ihre questuion

2CommandSpace @

Im Folgenden ist der Code, den ich in der App verwendet Ich arbeite

Sie müssen die Funktion OnScrollChanged in Ihrem ScrollView zu verwenden. ActionBar Nicht können Sie die Deckkraft, so dass eine Hintergrund drawable auf der Aktionsleiste und Sie können die Deckkraft bezogen auf die Menge der Bildlauf im Scroll ändern. Ich habe ein Beispiel -Workflow gegeben

Die Funktionsgruppen gibt die entsprechende alpha für die Ansicht locationImage basierend auf seiner Position WRT -Fenster.

this.getScrollY() Gibt an, wie viel der scrollView durchgelaufen ist

public void OnScrollChanged(int l, int t, int oldl, int oldt) {
    // Code ...
    locationImage.setAlpha(getAlphaForView(locationImageInitialLocation- this.getScrollY()));
}


private float getAlphaForView(int position) {
    int diff = 0;
    float minAlpha = 0.4f, maxAlpha = 1.f;
    float alpha = minAlpha; // min alpha
    if (position > screenHeight)
        alpha = minAlpha;
    else if (position + locationImageHeight < screenHeight)
        alpha = maxAlpha;
    else {
        diff = screenHeight - position;
        alpha += ((diff * 1f) / locationImageHeight)* (maxAlpha - minAlpha); // 1f and 0.4f are maximum and min
                                            // alpha
        // this will return a number betn 0f and 0.6f
    }
    // System.out.println(alpha+" "+screenHeight +" "+locationImageInitialLocation+" "+position+" "+diff);
    return alpha;
}

EDIT: Ich habe ein Beispiel Arbeits Probe bei https://github.com/ramanadv/fadingActionBar hinzugefügt, können Sie einen Blick auf sie haben .

Wie schreibt man einen ActionBar wie Google Play, die in blendet beim Scrollen machen

3Cristiana214 @

https://developer.android.com/training/basics/actionbar/overlaying.html

Wie schreibt man einen ActionBar wie Google Play, die in blendet beim Scrollen machen

Aktionsleiste im Overlay-Modus .

Aktiviert Overlay-Modus

To Aktiviert Overlay-Modus for the action bar, you need to create a custom theme that extends an existing action bar theme and set the android:windowActionBarOverlay property to true.

Für Android 3.0 und höher

Wenn Ihr minSdkVersion auf 11 oder höher eingestellt ist, sollte Ihr eigenes Thema Theme.Holo Thema ( oder einer seiner Nachkommen) als Mutter Thema verwenden . Zum Beispiel:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
    </style>
</resources>

Für Android 2.1 und höher

Wenn Ihre Anwendung wird mit dem Kundendienst Bibliothek für die Kompatibilität auf Geräten mit Versionen niedriger als Android 3.0, Ihr eigenes Thema sollte Theme.AppCompat Thema ( oder einer seiner Nachkommen) als Mutter Thema verwenden . Zum Beispiel:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat">
        <item name="android:windowActionBarOverlay">true</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
    </style>
</resources>

Geben Layout- Top - Marge

Wenn der Aktionsleiste ist im Overlay-Modus, kann es einige Ihrer Layout, das sichtbar bleiben sollte verschleiern. Um sicherzustellen, dass solche Produkte weiterhin unter der Aktionsleiste zu jeder Zeit, fügen Sie entweder Margin oder Polsterung an der Oberseite des view (s) mit dem durch actionBarSize angegebene Höhe . Zum Beispiel:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?android:attr/actionBarSize">
    ...
</RelativeLayout>
4shaobin0604 @

Bitte überprüfen Sie diese Bibliothek https://github.com/ManuelPeinado/FadingActionBar die das kühle Fading Aktionsleiste gewünschten Effekt zu implementiert

5SmallSani @

On webView:

@JavascriptInterface
public void showToolbar(String scrollY, String imgWidth) {
    int int_scrollY = Integer.valueOf(scrollY);
    int int_imgWidth = Integer.valueOf(imgWidth);

    String clr;
    if (int_scrollY<=int_imgWidth-actionBarHeight) {
        clr = Integer.toHexString(int_scrollY * 255 / (int_imgWidth-actionBarHeight));
    }else{
        clr = Integer.toHexString(255);
    }

    toolbar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#"+clr+"9CCC65")));
}
Wie schreibt man einen ActionBar wie Google Play, die in blendet beim Scrollen machen