經(jīng)過一段時間的“修煉”,以及文章一的反饋梆靖,更新了一些知識點控汉,然后自己從新寫了一下,作為補充和記錄返吻!
對于不清楚做的什么的小伙伴姑子,可以看看文章1的描述或者看看效果圖,這里就不啰嗦了测僵,本篇主要是對上一個版本進行簡化街佑、修改,也是覺得更好的實現(xiàn)捍靠。效果都是和文章1一樣沐旨。
文章一的跳轉
效果圖,如下:
1榨婆、主要依賴:
compile'com.android.support:support-v4:25.1.0'
compile 'com.jaeger.statusbaruitl:library:1.3.6'
這次修改呢希俩,替換了上一篇狀態(tài)欄依賴包的使用,本人覺得現(xiàn)文這個更加的好纲辽,使用非常方便颜武,并且作者對4.4的版本做了適配,4.4以上的版本都可以使用這個效果拖吼。另外還可以對狀態(tài)欄的顏色進行透明度的設置鳞上,其他還有些設置請各位看看作者的說明吧。(感謝作者5醯怠)
statusbaruitl使用說明
2篙议、和文章1對比改進點
(1)、狀態(tài)欄依賴庫替換怠硼。(如上1描述)
(2)鬼贱、使用ArgbEvaluator 進行顏色值漸變的獲取。替換了文章1中類ColorShades 的復雜使用香璃。
(3)这难、用設置全屏,適配版本4.4以下的效果葡秒。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
3姻乓、代碼部分
布局、資源文件等和文章1中是一樣的眯牧。不同之處是Activity的代碼部分蹋岩。文章后貼出代碼地址,就不再重復說明文章1中相同的代碼了学少。具體的思路描述也參考文章1吧(嘿嘿~~)
在此貼出Activity的代碼剪个。
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);
}
}}
4、項目GitLub地址
項目地址
效果圖為5.0以上運行效果版确,歡迎大家斧正扣囊,感謝大家!