android 滑动卡片 背景色,Android应用开发之ViewPager引导页根据滑动渐变背景色

本文将带你了解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 

{

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 

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 

{

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频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值