导航抽屉打开时逐渐设置透明度

时间:2014-02-15 10:29:09

标签: android transparency opacity transparent navigation-drawer

我想将导航抽屉设置为完全透明,并且当用户滑动打开导航抽屉时,它逐渐(跟随用户手指)变得不透明。我怎样才能做到这一点?

这是XML布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/RLayout02"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#EDEDED" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#EDEDED"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            android:scrollY="0dp" >

            <TextView
                android:id="@+id/welcomeHeader"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="0dp"
                android:background="@drawable/bg_card_blue"
                android:gravity="center_horizontal|center_vertical"
                android:text="@string/welcomeHeader"
                android:textColor="#07BDEC"
                android:textSize="20sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/swipeOver"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/welcomeInfo"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="16dp"
                android:background="@drawable/bg_card_red"
                android:gravity="center_horizontal|center_vertical"
                android:onClick="move"
                android:text="@string/swipe"
                android:textColor="#EC135A"
                android:textSize="18sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/welcomeInfo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/swipeOver"
                android:layout_below="@+id/welcomeHeader"
                android:layout_marginTop="16dp"
                android:background="@drawable/my_button"
                android:gravity="center_horizontal|center_vertical"
                android:lineSpacingExtra="2sp"
                android:text="@string/welcomeInfo"
                android:textSize="14sp" />
        </RelativeLayout>
    </RelativeLayout>

    <ImageView
        android:id="@+id/imgMin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|bottom"
        android:paddingBottom="10dp"
        android:paddingLeft="70dp"
        android:paddingRight="70dp"
        android:src="@drawable/mp_black"
        android:visibility="invisible" />
</FrameLayout>

<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@android:color/white"
    android:choiceMode="singleChoice"
    android:divider="#DDDDDD"
    android:dividerHeight="0.5dp" />

1 个答案:

答案 0 :(得分:0)

您可能已经实施了DrawerLayout.DrawerListener(您应该使用onDrawerOpenedonDrawerClosed)我不确定但是您可以尝试onDrawerSlide你正在滑动抽屉。 从而给出参数“偏移”。我相信这是新的偏移(滑动距离) 这给出了0到1之间的值。 在这种方法中,您可以尝试更改抽屉的alpha。

试试这个:

 ActionbarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
@Override
onDrawerOpened(){};
@Override
onDrawerClosed(){};

修改

@Override
onDrawerSlide(View drawerview, float slideoffset){
drawerview.setAlpha((1/255)*slideoffset);
}

尝试为抽屉视图设置alpha。它也不应该为子视图设置alpha。

这只是一个快速草稿,所以我不确定它是否完美有效(特别是对于alpha公式)但你应该朝这个方向看一下这个。

SHADOW EDIT:

@Override
onDrawerSlide(View drawerview, float slideoffset){
drawerview.setAlpha((1/255)*slideoffset);
shadowDrawable.setAlpha((1/255)*slideoffset);
mDrawerLayout.setDrawerShadow(shadowDrawable);

}