2014-01-30 6 views
0

То, что я пытаюсь достичь, - это анимация затухания в/из фонового изображения.Анимировать фон в списке прокрутки

У меня есть деятельность, как это:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".DayOverview" 
    xmlns:app="http://schemas.android.com/apk/lib/com.google.ads" > 

    <ImageView 
     android:id="@+id/dayOverviewBg" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" 
     android:src="@drawable/bg_home" /> 

    <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:layout_alignParentLeft="true" > 

     <android.support.v4.view.ViewPager 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/dayOverview_pager" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:layout_marginTop="@dimen/px40" 
      android:layout_marginRight="@dimen/px20" 
      android:layout_marginLeft="@dimen/px20" /> 

     <com.google.ads.AdView 
      xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
      android:id="@+id/dayOverviewAd" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:adSize="SMART_BANNER" 
      app:adUnitId="xx-xxx-x...xxxxxxxxx" /> 

    </LinearLayout> 

</FrameLayout> 

и для каждой страницы ViewPager фрагмент с ListView, что я хочу, чтобы изменить изображение в деятельности, когда ListView свитки с эффектом выцветанию ,

Я искал что-то вроде этого, но все, что я мог найти, это сделать что-то вроде parallax effect на главном экране Android.

ответ

1

Вы пробовали посмотреть в интерфейсе AbsListView.OnScrollListener? По сути, он запускается каждый раз, когда прокручивается список. Затем вы можете получить первый видимый элемент в списке, используя метод getFirstVisiblePosition(), выполнить ваши вычисления и, в конечном итоге, сменить фон.

Для достижения эффекта затенения для переключения фона, вы можете использовать TransitionDrawable

Вот пример:

  TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[]{ 
        mLockscreenBg.getDrawable(), // current background drawable 
        fetchedDrawable     // new drawable 
      }); 

      mLockscreenBg.setImageDrawable(transitionDrawable); 
      mLockscreenBg.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      transitionDrawable.setCrossFadeEnabled(true); // this is optional, but it delivers a better animation 
      transitionDrawable.startTransition(mShortAnimDuration); 
+0

хорошо я дам ему попробовать и посмотреть, если это то, что мне нужно :) – Ayoub

+0

Я все еще не могу остановить переход, когда прокрутка останавливается, как я могу рассчитать продолжительность анимации? – Ayoub

+0

Вы уже явно предоставляете продолжительность анимации в методе 'startTransition (int duration)'. Вы постоянно пытаетесь обновить фон или только при остановке прокрутки? – Saket

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