引导页是项目中很常见的东西了,在用户下载app首次打开后,会进入引导界面,通常都是三四张图片说明,简单介绍下app的功能和使用方法之类,最后一张有着“进入应用”的按钮,点击即可进入主页,之后打开app则不会再次进入启动页,话不多说,以下做个归纳。
效果图:
实现步骤:
1.首先我们做个有渐变动画的启动页面SplashActivity
在onCreate里设置核心方法setAlphaAnimation()
public voID setAlphaAnimation(){ //生成AlphaAnimation的对象 AlphaAnimation animation= new AlphaAnimation(this); //设置动画的持续时间 animation.setDuration(3000); //给要渐变的控件设置动画,比如说imagevIEw,textvIEw,linearLayout之类的 ll.setAnimation(animation); //设置动画监听,结束时跳转到下一个页面(首次打开就是引导页面,反之就是主页) animation.setAnimationListener(new Animation.AnimationListener(){ public voID onAnimationStart(Animation animation){ } public voID onAnimationEnd(Animation animation){ jump2Activity(); } public voID onAnimationRepeat(Animation animation){ } });}
分析一下这个跳转方法jump2Activity(),我们这里使用SharedPeference来判断应用是否首次打开,设变量isFirst默认值为0,进入引导页跳转到主页时再把这个值设为1,这样,每次跳转时判断isFirst的值,如果仍是默认值0则为首次打开进入引导页,反之进入主页。
public voID jump2Activity(){ SharedPreferences sharedPreference= getSharedPreferences("data",MODE_PRIVATE); String isFirst= sharedPreferences.getString("isFirst","0"); Intent intent= new Intent(); if("0".equals(isFirst)){ intent.setClass(this,GuIDeActivity.class); }else{ intent.setClass(this. MainActivity.class); } startActivity(intent); finish();}
2.接下来我们做引导页面
引导页面是由三个控件组成,VIEwpager,圆点指示器的线性布局linearlayout, 最后一页的 “进入应用” 按钮。
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <androID.support.v4.vIEw.VIEwPager androID:ID="@+ID/guIDe_vp" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" /> <linearLayout androID:ID="@+ID/guIDe_ll" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParentBottom="true" androID:layout_centerHorizontal="true" androID:layout_marginBottom="100dp" androID:orIEntation="horizontal" /> <button androID:ID="@+ID/guIDe_btn" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_above="@ID/guIDe_ll" androID:layout_centerHorizontal="true" androID:text="进入应用" androID:layout_marginBottom="10dp" androID:visibility="gone"/></relativeLayout>
在GuIDeActivity中,首先初始化引导图片
/** * 初始化图片 */private voID initimgs() { VIEwPager.LayoutParams params= new VIEwPager.LayoutParams(); imageVIEws= new ArrayList<ImageVIEw>(); for (int i= 0; i< imgs.length; i++){ ImageVIEw imageVIEw= new ImageVIEw(this); imageVIEw.setLayoutParams(params); imageVIEw.setimageResource(imgs[i]); imageVIEw.setScaleType(ImageVIEw.ScaleType.FIT_XY); imageVIEws.add(imageVIEw); }}
初始化底部圆点指示器,这里值得一提的是我们给各圆点设置相应的点击事件,当点击某个位置的圆点时,vIEwpager自动切换到相应位置的图片,不过实际应用中这里实用性不是很大,因为圆点太小,可触摸范围有限,点击事件不太好触发。
/** * 初始化底部圆点指示器 */private voID initDots() { linearLayout layout= findVIEwByID(R.ID.guIDe_ll); linearLayout.LayoutParams params= new linearLayout.LayoutParams(20,20); params.setmargins(10,10,0); dotVIEws= new ImageVIEw[imgs.length]; for (int i= 0; i< imageVIEws.size(); i++){ ImageVIEw imageVIEw= new ImageVIEw(this); imageVIEw.setLayoutParams(params); imageVIEw.setimageResource(R.drawable.dotselector); if (i== 0){ imageVIEw.setSelected(true); }else{ imageVIEw.setSelected(false); } dotVIEws[i]= imageVIEw; final int finali = i; dotVIEws[i].setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { vp.setCurrentItem(finali); } }); layout.addVIEw(imageVIEw); }}
设置vIEwpager的滑动事件
vp.addOnPage@R_404_1962@(this);
生成三个方法,我们主要在onPageSelected()方法中做 *** 作,当某个位置的圆点被选中时,显示选中后的图片,其余圆点显示未选中的图片,这里主要应用selector控制器,至于相应的选中未选中圆点图片需要大家去找。当滑动到最后一个页面时,将 "进入应用" 的按钮显示,反之隐藏。
@OverrIDepublic voID onPageScrolled(int i,float v,int i1) {}@OverrIDepublic voID onPageScrollStateChanged(int i) {}@OverrIDepublic voID onPageSelected(int arg0) { for (int i= 0; i< dotVIEws.length; i++){ if (arg0== i){ dotVIEws[i].setSelected(true); }else { dotVIEws[i].setSelected(false); } if (arg0== dotVIEws.length- 1){ btn.setVisibility(VIEw.VISIBLE); }else { btn.setVisibility(VIEw.GONE); } }}
dotSelector.xml
<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:drawable="@drawable/focus_on" androID:state_selected="true"/> <item androID:drawable="@drawable/focus_nomal" androID:state_selected="false"/></selector>
在最后一个页面点击 "进入应用" 按钮跳转到主页时,将缓存中的isFirst数据改为1,以后打开应用则不会再进入引导页面了。
@OverrIDepublic voID onClick(VIEw vIEw) { switch (vIEw.getID()){ case R.ID.guIDe_btn: setisFirst(); Intent intent= new Intent(GuIDeActivity.this,MainActivity.class); startActivity(intent); finish(); break; }}/** * 改变首次打开的状态 */private voID setisFirst() { SharedPreferences.Editor editor= getSharedPreferences("data",MODE_PRIVATE).edit(); editor.putString("isFirst","1"); editor.commit();}
至此全部完成!demo附上
源码下载
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
总结以上是内存溢出为你收集整理的Android实现渐变启动页和带有指示器的引导页全部内容,希望文章能够帮你解决Android实现渐变启动页和带有指示器的引导页所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)