user3166600
user3166600

Reputation:

refreshing of canvas is happening only after touch

I am using ViewPagerparallax class,(for parallax view ) and I am setting the background using pager.setbackgroundAsset(....);

everything works fine....but I have a situation,what i want to achieve is that whenever the fragments go in a pause state and whenever it is resumed,the background should change and hence i am changing the background in the onResume method but seems like change is only visible whenever i try to swipe between fragments ...

this is my code

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]);

Upvotes: 0

Views: 84

Answers (2)

FabianCook
FabianCook

Reputation: 20577

A few notes.

First of, I am assuming you are using this: https://github.com/MatthieuLJ/ViewPagerParallax/blob/master/src/com/matthieu/ViewPagerParallax.java

When looking at the source it appears to be that you are doing things correctly.

I few things I can see that could be happening

  1. The max number of pages set is 0, which is the default
  2. The width or height is 0
  3. The background hasn't changed from last time
  4. The application has run out of memory (They say they don't want to use more then 1/5th of the memory
  5. An exception was thrown while creating the bitmap of the image

A few things you could try

For point number 1, if you haven't already, call the set_max_pages with a number you see fit.

Point 2, Is the ViewPager in the activity with width and height set?

Point 3, confirm that you generator is working. (Already done, logic works perfect)

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))]));
}

This returns the desired output, no problem there.

Point 4 & 5, Check logcat, it could say some errors, the tag should say ViewPagerParallax

I would say point 1 could be it, it will draw the background if it hasn't already once you set it.

Upvotes: 1

Amy McBlane
Amy McBlane

Reputation: 164

I'm not really sure how setBackgroundAsset works, but try a call to invalidate(); at the end of onResume(). That will insure that your onDraw() method will be called ASAP and the new background will be redrawn.

Upvotes: 0

Related Questions