Android应用开发之ViewPager引导页根据滑动渐变背景色
白羽 2018-08-10 来源 :网络 阅读 1070 评论 0

摘要:本文将带你了解Android应用开发之ViewPager引导页根据滑动渐变背景色,希望本文对大家学Android有所帮助

        本文将带你了解Android应用开发之ViewPager引导页根据滑动渐变背景色,希望本文对大家学Android有所帮助


1、主要依赖:
compile'com.android.support:support-v4:25.1.0'
compile 'com.jaeger.statusbaruitl:library:1.3.6'

状态栏依赖包使用非常方便,并且作者对4.4的版本做了适配,4.4以上的版本都可以使用这个效果。另外还可以对状态栏的颜色进行透明度的设置,其他还有些设置请各位看看作者的说明吧。
(感谢作者!)
statusbaruitl使用说明

工作步骤:
(1)、使用状态栏依赖库。
(2)、使用ArgbEvaluator 进行颜色值渐变的获取。
(3)、用设置全屏,适配版本4.4以下的效果。

Java代码  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)  {  getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  }  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
3、代码部分
Java代码  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);      }  }}  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);
    }
}}
   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程