摘要:本文将带你了解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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号