只有在触摸后才能刷新画布

时间:2014-03-27 19:54:58

标签: android android-fragments

我正在使用ViewPagerparallax类,(用于视差视图),我使用pager.setbackgroundAsset(....);设置背景

一切正常......但是我有一个情况,我想要实现的是每当片段进入暂停状态并且每当它恢复时,背景应该改变,因此我改变了背景onResume方法,但似乎只有在我尝试在片段之间滑动时才能看到更改...

这是我的代码

public void onResume()
    {   

        Activity_Fragments ab = (Activity_Fragments) this.getActivity();
        ViewPagerParallax pager=ab.hi();
         int arr[]={R.raw.a1,R.raw.a2,R.raw.a3,R.raw.a4,R.raw.a5,R.raw.a6,R.raw.a7,R.raw.a8,
                    R.raw.a9,R.raw.a10,R.raw.a11,R.raw.a12,R.raw.a13,R.raw.a14,R.raw.a15,R.raw.a16,
                    R.raw.a17,R.raw.a18,R.raw.a19,R.raw.a20,R.raw.a21,R.raw.a22,R.raw.a23,
                    R.raw.a24,R.raw.a25,R.raw.a26,R.raw.a27,R.raw.a28,R.raw.a29};
            int x=(int)(Math.random() * ((28 ) + 1));
            pager.setBackgroundAsset(arr[x]);

2 个答案:

答案 0 :(得分:1)

一些笔记。

首先,我假设你正在使用它:https://github.com/MatthieuLJ/ViewPagerParallax/blob/master/src/com/matthieu/ViewPagerParallax.java

在查看来源时,您似乎正在做正确的事情。

我可以看到一些可能发生的事情

  1. 设置的最大页数为0,这是默认值
  2. 宽度或高度为0
  3. 背景与上次相比没有变化
  4. 应用程序内存不足(他们说他们不想使用超过1/5的内存
  5. 创建图像的位图时抛出异常
  6. 你可以尝试一些事情

    对于第1点,如果您还没有,请使用您认为合适的号码拨打set_max_pages

    第2点,ViewPager是否设置了宽度和高度的活动?

    第3点,确认您的发电机正在工作。 (已经完成,逻辑工作完美)

    int arr[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,
               18,19,20,21,22,23,24,25,26,27,28,29};
    for(int i = 0; i < 100; i++){
        Log.d("TEST", String.valueOf(arr[(int)(Math.random() * ((28 ) + 1))]));
    }
    

    这会返回所需的输出,没问题。

    第4点和第4点5,检查logcat,可能会说一些错误,标签应该说ViewPagerParallax

    我会说第1点可能是它,如果你设置它已经没有了它将会绘制背景。

答案 1 :(得分:0)

我不确定setBackgroundAsset是如何工作的,但是尝试调用invalidate();在onResume()的末尾。这将确保您的onDraw()方法将被ASAP调用,并且将重新绘制新的背景。