Pankaj
Pankaj

Reputation: 2110

Drawable doesn't work as expected

I have toolbar and PagerSlidingTabStrips for my layout and I'm changing the drawable of both at the same time when a different page is selected or when the list associated with the page is scrolled. Here's the code:

Drawable DRAWABLE[] = new Drawable[8];
DRAWABLE[0] = getResources().getDrawable(R.drawable.actionbar_bg);
DRAWABLE[1] = getResources().getDrawable(R.drawable.actionbar_bg_red);
DRAWABLE[2] = getResources().getDrawable(R.drawable.actionbar_bg_blue);
DRAWABLE[3] = getResources().getDrawable(R.drawable.actionbar_bg_orange);
DRAWABLE[4] = getResources().getDrawable(R.drawable.actionbar_bg_grey);
DRAWABLE[5] = getResources().getDrawable(R.drawable.actionbar_bg);
DRAWABLE[6] = getResources().getDrawable(R.drawable.actionbar_bg_red);
DRAWABLE[7] =getResources().getDrawable(R.drawable.actionbar_bg_blue);

//OnPageSelected Method:

@Override
public void onPageSelected(int position) {
    // TODO Auto-generated method stub

    mHeaderLogo.setImageResource(IMAGES[position]);

    mPagerStripView.setBackground(DRAWABLE[position]);

    mActionBarView.setBackground(DRAWABLE[position]);

}

//OnScroll Method:

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
        int visibleItemCount, int totalItemCount, int pagePosition) {
    // TODO Auto-generated method stub

    if (mViewPager.getCurrentItem() == pagePosition) {

        int scrollY = getScrollY(view);

        ViewHelper.setTranslationY(mHeader,
                Math.max(-scrollY, mMinHeaderTranslation));
        float ratio = clamp(ViewHelper.getTranslationY(mHeader)
                / mMinHeaderTranslation, 0.0f, 1.0f);

        int alpha = (int) (ratio * 255);

        Drawable currentDrawable = DRAWABLE[pagePosition];

        mCurrentDrawable.setAlpha(alpha);
        mActionBarView.setBackground(mCurrentDrawable);

        mPagerStripView.setBackground(mCurrentDrawable);



    }

}

But the alpha value doesn't changes as expected for both. You can see from gif what i'm trying to achieve

enter image description here

Upvotes: 0

Views: 509

Answers (1)

Dilavar Malek
Dilavar Malek

Reputation: 1167

replace this

int DRAWABLE[] = new int[8];
        DRAWABLE[0] = R.drawable.ic_launcher;
        DRAWABLE[1] =  R.drawable.actionbar_bg_red;
        DRAWABLE[2] =  R.drawable.actionbar_bg_blue;
        DRAWABLE[3] =  R.drawable.actionbar_bg_orange;
        DRAWABLE[4] =  R.drawable.actionbar_bg_grey;
        DRAWABLE[5] =  R.drawable.actionbar_bg;
        DRAWABLE[6] =  R.drawable.actionbar_bg_red;
        DRAWABLE[7] = R.drawable.actionbar_bg_blue;

replace this

setBackgroundResource(DRAWABLE[position]); 

with

setbackground(DRAWABLE[position]);

Upvotes: 1

Related Questions