Android实现渐变启动页和带有指示器的引导页

Android实现渐变启动页和带有指示器的引导页,第1张

概述Android实现渐变启动页和带有指示器的引导页 引导页是项目中很常见的东西了,在用户下载app首次打开后,会进入引导界面,通常都是三四张图片说明,简单介绍下app的功能和使用方法之类,最后一张有着"进入应用"的按钮,点击即可进入主页,之后打开app则不会再次进入启动页,话不多说,以下做个归纳. 效果图: 实现步骤: 1.首先我们做个有渐变动画的启动页面SplashActivity 在onCreate里设置核心方法setAlphaAnimation() public void setAlphaAnimation(){ //生 ...

引导页是项目中很常见的东西了,在用户下载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实现渐变启动页和带有指示器的引导页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存