0

enter image description hereАнкерные imageViews к Сворачивание панели инструментов

В этом изображении они реализовали Сворачивание панель инструментов с параллакса ImageView и FAB якорь на панели инструментов. В приложении, которое я создаю, мне нужно привязать ImageView вместо плавающей кнопки действия, сохраняя при этом все исчезновение и анимацию. Как мне это сделать?

Мой текущий

activity_main.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/bar" 
    android:layout_width="match_parent" 
    android:layout_height="252dp" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginBottom="32dp" 
     app:expandedTitleMarginEnd="64dp" 
     app:expandedTitleMarginStart="48dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <ImageView 
      android:id="@+id/header" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/random" 
      android:fitsSystemWindows="true" 
      android:scaleType="centerCrop" 
      app:layout_collapseMode="parallax" /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/anim_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > 
      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center"/> 

     </android.support.v7.widget.Toolbar> 
    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/scrollableview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<com.example.sudarshan.testapp.MLRoundedImageView 
    android:layout_width="152dp" 
    android:layout_height="152dp" 
    app:layout_anchor="@+id/bar" 
    app:layout_anchorGravity="bottom|center" 
    android:id="@+id/circularImage"/> 
</android.support.design.widget.CoordinatorLayout> 

ImageView получает на якорь, но она не исчезает и вновь, как ФАБ делает.

ответ

3

Вы можете создать собственный класс поведения, который расширяет CoordinatorLayout.Behavior, а затем присоединяет его к вашему ImageView, добавляя атрибут app:layout_behavior="com.path.to.behavior.class".

В качестве альтернативы, добавьте AppBarLayout.OnOffsetChangedListener к Activity где вы возвещать FAB и AppBarLayout, а также использовать параметр verticalOffset, чтобы определить, когда начать AlphaAnimation на вашем ImageView.

Редактировать

public static MainActivity extends AppCompatActivity implements AppBarLayout.OnOffsetChangedListener { 

    private static final float THRESHOLD_PERCENTAGE = 0.2F; 

    private AppBarLayout mAppBarLayout; 
    //... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     //... 
     mAppBarLayout = (AppBarLayout) findViewById(R.id.my_app_bar); 
     mAppBarLayout.addOnOffsetChangedListener(this); 
    } 

    @Override 
    public void onOffsetChanged(AppBarLayout appBarLayout, int offset) { 

     int maxScroll = appBarLayout.getTotalScrollRange(); 
     float progressPercentage = (float) (Math.abs(offset)/maxScroll); 

     if (progressPercentage >= THRESHOLD_PERCENTAGE) { 
      //start an alpha animation on your ImageView here (i.e. fade out) 
     } else { 
      //Add an opposite animation here (i.e. it fades back in again) 
     } 
    } 

Регулировка значения THRESHOLD_PERCENTAGE изменит точку, в которой начинается анимация ImageView.

+0

Не могли бы вы отправить код? Это было бы очень полезно –

+0

@SudarshanSunder Я добавил пример того, как вы можете использовать 'AppBarLayout.OnOffsetChangedListener' – PPartisan

Смежные вопросы