【问题标题】:ViewFlipper stops flipping when device's lights gets offViewFlipper 在设备的灯熄灭时停止翻转
【发布时间】:2013-05-28 23:29:37
【问题描述】:

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

除了一件事,一切都很好

当包含ViewFlipperActivity 在前面并且一旦我调用startFlippling 并且ViewFlipper 正在翻转,并且过了一会儿如果我的设备的灯变暗然后关闭并且如果我按下主页/电源按钮立即ViewFlipper 停止翻转。在这种情况下,不会调用 onResumeonPause

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

这是我的布局代码,我已将 autoStart 设置为 false 因为基于某些事件 我打电话给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>

【问题讨论】:

标签: android android-layout


【解决方案1】:

Rite 现在我已将 ViewFlipper 属性 android:keepScreenOn 设置为 true 以便屏幕保持 ON ,但我仍在等待更好的答案

【讨论】:

    【解决方案2】:

    如果我将 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);          
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 2013-07-10
      相关资源
      最近更新 更多