如何制作像Google Play一样的ActionBar,在滚动时淡入淡出

Cri*_*vez 69 android transparent android-actionbar android-actionbar-compat

如何使用Google Play等透明或半透明的ActionBar在滚动时淡入或淡出windowActionBarOverlay

请查看以下屏幕截图

**在此处输入图片说明**

Com*_*ace 31

以下是我在我正在使用的应用程序中使用的代码

你必须使用OnScrollChanged你的功能ScrollView.ActionBar不允许您设置不透明度,因此在操作栏上设置背景可绘制,您可以根据滚动视图中的滚动量更改其不透明度.我给出了一个示例工作流程

函数集根据其位置WRT窗口为视图locationImage提供适当的alpha.

this.getScrollY()给你scrollView滚动了多少

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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我在https://github.com/ramanadv/fadingActionBar上添加了一个示例工作示例,您可以查看它.

在此输入图像描述

  • 我试图在https://github.com/ramanadv/fadingActionBar上运行您的示例工作示例.但输出与截图不同.显示透明操作栏.没有褪色效果!! (2认同)

sha*_*604 8

请检查这个库https://github.com/ManuelPeinado/FadingActionBar,它实现了你想要的炫酷褪色动作条效果

  • 请注意,这不适用于Android 5工具栏.仅适用于Actionbar. (3认同)

mus*_*vgi 8

这个库有助于动画https://github.com/ksoichiro/Android-ObservableScrollView

  • 这应该是一个评论. (4认同)

Cri*_*vez 7

官方Google DeveloperDocumentation

在此输入图像描述

覆盖模式中的操作栏.

启用叠加模式

要为操作栏启用叠加模式,您需要创建一个扩展现有操作栏主题的自定义主题,并将android:windowActionBarOverlay属性设置为true.

仅适用于Android 3.0及更高版本

如果您的minSdkVersion设置为11或更高,则您的自定义主题应使用Theme.Holo主题(或其后代之一)作为您的父主题.例如:

<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>
Run Code Online (Sandbox Code Playgroud)

适用于Android 2.1及更高版本

如果您的应用程序使用支持库在运行低于Android 3.0的版本的设备上兼容,则您的自定义主题应使用Theme.AppCompat主题(或其后代之一)作为您的父主题.例如:

<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>
Run Code Online (Sandbox Code Playgroud)

指定布局顶部边距

当操作栏处于叠加模式时,它可能会遮挡一些应保持可见的布局.要确保此类项始终保持在操作栏下方,请使用actionBarSize指定的高度在视图顶部添加边距或填充.例如:

<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>
Run Code Online (Sandbox Code Playgroud)