2013-04-10 34 views
1

我使用ViewFlipper翻轉兩個圖像。一個圖像是一顆小小的心臟,另一個是一顆大心臟,它們不斷翻轉,使它看起來像心跳。當設備的燈光熄滅時,ViewFlipper停止翻轉

一切正常,除了一件事

當含有ViewFlipper是正面和ViewFlipper被翻動一次,我叫startFlippling,如果我的設備的光變得暗淡了一段時間後,然後Activity關閉,如果我立即按下主頁/電源按鈕,ViewFlipper停止翻轉。在這種情況下,不會調用onResume或。

此外,當設備的燈光關閉,一段時間後,如果我按下電源按鈕,並輸入我的密碼解鎖屏幕,然後ViewFlipper工作正常。

這裏是我的佈局代碼,因爲基於某些事件 我打電話startFlippingViewFlipper

<ViewFlipper 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:autoStart="false" 
    android:flipInterval="700" 
    android:id="@+id/heartThrob" 
    android:layout_centerHorizontal="true" 
    android:layout_centerInParent="true" 

> 

    <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/small" 
    android:id="@+id/heartOne" 

    /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/big" 
    android:id="@+id/heartTwo" 
/> 


</ViewFlipper> 
+0

有一個答案可以幫助你在這裏:http://stackoverflow.com/a/20636688/3111573 – ldemay 2013-12-17 14:31:18

回答

0

儀式現在我有ViewFlipper屬性android:keepScreenOn設置爲true使我已經設置了autoStartfalse屏幕仍然ON,但我仍然在等待一些更好的答案

0

我有同樣的問題,如果我使用setFlipInterval方法viewFlipper的startFlipping。所以我解決了這個問題,通過使用處理器來爲viewFlipper設置動畫。

順便說一句,這個問題發生在Galaxy Nexus 4.0.1上,而不是在Galaxy Nexus 4.2.2上。

我希望我的代碼的這部分可以幫助你。

private Handler handler = new Handler(); 

private Runnable autoSwipeRunnable = new Runnable() { 
    @Override 
    public void run() { 
     moveLeft(); 
    } 
}; 


private void moveLeft() { 
    if (mViewFlipper != null && mViewFlipper.getChildCount() > 1) { 
     mViewFlipper.setInAnimation(animLeftIn); 
     mViewFlipper.setOutAnimation(animLeftOut); 

     mViewFlipper.showNext(); 

     startAutoCycle();   
    } 
} 

private void startAutoCycle() { 
    if (mViewFlipper.getChildCount() > 1) { 

     if (autoCycleInterval <= 0) { 
      autoCycleInterval = 5000;   
     } 

     handler.removeCallbacks(autoSwipeRunnable); 
     handler.postDelayed(autoSwipeRunnable, autoCycleInterval);   
    } 
}