1

ViewFlipper用来翻转两个图像。一个图像是一颗小心脏,另一个是一颗大心脏,它们不断地翻转,看起来心脏在跳动。

一切都很好,除了一件事

Activity包含ViewFlipper在前面并且ViewFlipper一旦我打电话给正在翻转时startFlippling,一段时间后如果我的设备的灯变暗然后关闭并且如果我立即按下主页/电源按钮ViewFlipper停止翻转。在这种情况下没有onResume或被onPause调用。

此外,当设备的灯关闭时,如果我按下电源按钮并输入我的密码解锁屏幕,则ViewFlipper工作正常。

这是我的布局代码,我已将其设置为autoStartfalse因为基于我正在调用startFlipping的某些事件ViewFlipper

<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>
4

2 回答 2

0

现在仪式我已将ViewFlipper属性 设置android:keepScreenOntrue以便屏幕保留ON,但我仍在等待更好的答案

于 2013-04-12T09:30:21.157 回答
0

如果我将 viewFlipper 的 startFlipping 与 setFlipInterval 方法一起使用,我也会遇到同样的问题。所以我通过使用处理程序为 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);          
    }
}
于 2013-05-27T11:56:11.450 回答