2014-01-30 91 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控件滾動了淡入淡出效果。

我四處尋找這樣的東西,但我能找到的就是如何在android的主屏幕上製作類似parallax effect的東西。

回答

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