如何动画更改FrameLayout的前景可绘制的alpha?

时间:2014-11-22 09:40:23

标签: java android android-animation android-view

我正试图找到一种方法来动画更改FrameLayout的前景可绘制的alpha,但我似乎无法找到一种方法。 如果有人能指出我正确的方向,我应该怎么做,我将非常感激。 相关代码如下:

XML布局文件:

<com.bacon.corey.audiotimeshift.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/sliding_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    sothree:panelHeight="0dp"
    sothree:shadowHeight="10dp"
    sothree:paralaxOffset="100dp"
    sothree:fadeColor="@android:color/transparent"

    >

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:padding="0dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        android:padding="0dip"
        android:gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"
        android:id="@+id/recordingListMainLayout"
        android:foreground="@drawable/dim_shadow_shape_dark"
        >

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:orientation="vertical"
            android:padding="0dp"
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            >
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/mainLayoutContainer"/>
<!--
            <android.support.v4.view.ViewPager
                android:id="@+id/viewPager"
                android:layout_width="match_parent"
                android:layout_height="0px"
                android:layout_weight="1"
                android:padding="0dp"
                android:layout_margin="0dp"
                />
-->


        </LinearLayout>

    </FrameLayout>

    <com.bacon.corey.audiotimeshift.FloatingActionsMenu
        android:id="@+id/fabMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:gravity="right"
        app:fab_addButtonColorNormal="@color/holo_red_light"
        app:fab_addButtonColorPressed="@color/c16"
        app:fab_addButtonPlusIconColor="@color/white"
        app:fab_expandDirection="up"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="10dp"
        android:layout_marginEnd="10dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"

        >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            >
            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/textview_rounded_corner_background_fam"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Option Four"
                    android:textAlignment="center"
                    android:padding="6dp"
                    android:fontFamily="sans-serif-medium"

                    />
            </FrameLayout>

            <com.bacon.corey.audiotimeshift.FloatingActionButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:fab_colorNormal="@color/c15"
                app:fab_colorPressed="@color/c15"
                app:fab_size="mini"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            >
            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/textview_rounded_corner_background_fam"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Option Four"
                    android:textAlignment="center"
                    android:padding="6dp"
                    android:fontFamily="sans-serif-medium"
                    />
            </FrameLayout>

            <com.bacon.corey.audiotimeshift.FloatingActionButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:fab_colorNormal="@color/c8"
                app:fab_colorPressed="@color/c8"
                app:fab_size="mini"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            >
            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/textview_rounded_corner_background_fam"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Option Four"
                    android:textAlignment="center"
                    android:padding="6dp"
                    android:fontFamily="sans-serif-medium"
                    />
            </FrameLayout>

            <com.bacon.corey.audiotimeshift.FloatingActionButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:fab_colorNormal="@color/a1"
                app:fab_colorPressed="@color/a1"
                app:fab_size="mini"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            >
            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/textview_rounded_corner_background_fam"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Option Four"
                    android:textAlignment="center"
                    android:padding="6dp"
                    android:fontFamily="sans-serif-medium"
                    />
            </FrameLayout>

            <com.bacon.corey.audiotimeshift.FloatingActionButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:fab_colorNormal="@color/a2"
                app:fab_colorPressed="@color/a2"
                app:fab_size="mini"
                />
        </LinearLayout>    </com.bacon.corey.audiotimeshift.FloatingActionsMenu>
</RelativeLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center|top"
            android:textSize="16sp"
            android:id="@+id/slideUpPanel"
            >

        </FrameLayout>

</com.bacon.corey.audiotimeshift.SlidingUpPanelLayout>

我用来改变前景alpha的java代码:

   fabMain.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean expanded = fabMenu.toggle();
            mainActivity.getDimShadowDrop().setForeground(getResources().getDrawable(R.drawable.dim_shadow_shape_light));
            mainActivity.getDimShadowDrop().getForeground().setAlpha(180);
            if (expanded){
                ((MainActivity)getActivity()).replaceFragment(new RecordFragment(), R.id.slideUpPanel, false);
                slidingUpPanelLayout.expandPanel();
                defaultColor = getResources().getColor(R.color.recordDefaultColor);


            }


        }
    });

1 个答案:

答案 0 :(得分:0)

使用从0到1的Animation而不是典型的方式,使用0到255.像这样的东西会激活CardView的前景。

public static void pulseForeground(CardView view, long duration) {
    ObjectAnimator animator = ObjectAnimator.ofInt(view.getForeground(), "alpha", 0, 255);
    animator.setDuration(duration);
    animator.setStartDelay(20);
    animator.setRepeatMode(Animation.REVERSE);
    animator.setRepeatCount(Animation.INFINITE);
    animator.start();
}