ViewPager guide page gradient background color according to sliding


1. Main dependencies: compile '
com.android.support:support-v4:25.1.0'
compile 'com.jaeger.statusbaruitl:library:1.3.6'

The status bar dependency package is very convenient to use, and the author does the 4.4 version In order to adapt, this effect can be used in versions above 4.4. In addition, you can also set the transparency of the color of the status bar. For other settings, please see the author's instructions.
(Thanks to the author!) The working steps of
statusbaruitl instructions : (1), use the status bar to depend on the library. (2), use ArgbEvaluator to obtain the color value gradient. (3), use the setting full screen to adapt to the effect of version 4.4 and below.






if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

3. Code part
public class MainActivity extends Activity{

private RelativeLayout mRootLayout;

private ViewPager mViewPager;

private int colorBg[];

private ArgbEvaluator mArgbEvaluator;

private int barAlpha = 0;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate (savedInstanceState);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
    {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
    setContentView(R.layout.activity_main);
    mRootLayout = (RelativeLayout)findViewById(R.id.rl_root);
    mViewPager = (ViewPager)findViewById(R.id.viewpager);
    StatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.light_green_500), barAlpha);
    mArgbEvaluator = new ArgbEvaluator();
    colorBg = getResources().getIntArray(R.array.splash_bg);
    final IntroPager introPager = new IntroPager(R.array.splash_icon, R.array.splash_desc);
    mViewPager.setAdapter(introPager);
    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener()
    {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
        {
            int color = (int)mArgbEvaluator.evaluate(positionOffset, colorBg[position % colorBg.length],
                colorBg[(position + 1) % colorBg.length]);
            StatusBarUtil.setColor(MainActivity.this, color, barAlpha);
            mRootLayout.setBackgroundColor(color);
        }

        @Override
        public void onPageSelected(int position)
        {

        }

        @Override
        public void onPageScrollStateChanged(int state)
        {

        }  
    });
}

private class IntroPager extends PagerAdapter
{

    private String[] mDescs;

    private TypedArray mIcons;

    public IntroPager(int icoImage, int des)
    {
        mDescs = getResources().getStringArray(des);
        mIcons = getResources().obtainTypedArray(icoImage);
    }

    @Override
    public int getCount()
    {
        return mIcons.length();
    }

    @Override
    public boolean isViewFromObject(View view, Object object)
    {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position)
    {
        View itemLayout = getLayoutInflater().inflate(R.layout.layout_app_intro, container, false);
        ImageView mImage = (ImageView)itemLayout.findViewById(R.id.iv_img);
        TextView mTextView = (TextView)itemLayout.findViewById(R.id.tv_desc);
        Button mButton = (Button)itemLayout.findViewById(R.id.btn_launch);
        mImage.setImageResource (mIcons.getResourceId (position, 0));
        mTextView.setText(mDescs[position]);
        if (position == getCount() - 1)
        {
            mButton.setVisibility(View.VISIBLE);
        }
        else
        {
            mButton.setVisibility(View.GONE);
        }
        container.addView(itemLayout);
        return itemLayout;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object)
    {
        container.removeView((View)object);
    }
}}


http://www.jianshu.com/p/a0dde1ebf600

ArgbEvaluator A class for calculating color gradient values
​​http://blog.csdn.net/u013581141/article/details/68063469

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326357281&siteId=291194637