本文介绍一个app最常见的特性,就是新功能属性介绍和启动屏,一般会怎么实现呢,这不就打算告诉大家了么。
先说逻辑
先判断是否第一次启动app,如果是,则进入功能使用导航(最简单的做法就是,左右滑动切换查看,滑动到最后一页点击按钮进入首页)。 如果不是,则显示启动屏,2秒之后进入首页。逻辑是很简单,如果有广告怎么办?广告肯定是从服务器拿,但会缓存到本地,没网的时候可以显示,可以使用webVIEw来显示广告,反正笔者是这样干,具体实现先不说。
看看效果
上代码
SplashActivity.java
package com.devilwwj.featureguIDe;import androID.app.Activity;import androID.content.Intent;import androID.os.Bundle;import androID.os.Handler;import com.devilwwj.featureguIDe.global.AppConstants;import com.devilwwj.featureguIDe.utils.SpUtils;public class SplashActivity extends Activity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 判断是否是第一次开启应用 boolean isFirstopen = SpUtils.getBoolean(this,AppConstants.FirsT_OPEN); // 如果是第一次启动,则先进入功能引导页 if (!isFirstopen) { Intent intent = new Intent(this,WelcomeGuIDeActivity.class); startActivity(intent); finish(); return; } // 如果不是第一次启动app,则正常显示启动屏 setContentVIEw(R.layout.activity_splash); new Handler().postDelayed(new Runnable() { @OverrIDe public voID run() { enterHomeActivity(); } },2000); } private voID enterHomeActivity() { Intent intent = new Intent(this,MainActivity.class); startActivity(intent); finish(); }}
代码解析:使用SharedPreference来保存app启动状态,如果为true,则进入功能导航,否则延迟2秒之后进入主页面。
WelcomeGuIDeActivity.java
package com.devilwwj.featureguIDe;import androID.app.Activity;import androID.content.Intent;import androID.os.Bundle;import androID.support.v4.vIEw.VIEwPager;import androID.support.v4.vIEw.VIEwPager.OnPagechangelistener;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;import androID.Widget.ImageVIEw;import androID.Widget.linearLayout;import com.devilwwj.featureguIDe.global.AppConstants;import com.devilwwj.featureguIDe.utils.SpUtils;import java.util.ArrayList;import java.util.List;public class WelcomeGuIDeActivity extends Activity implements OnClickListener { private VIEwPager vp; private GuIDeVIEwPagerAdapter adapter; private List<VIEw> vIEws; private button startBtn; // 引导页图片资源 private static final int[] pics = { R.layout.guID_vIEw1,R.layout.guID_vIEw2,R.layout.guID_vIEw3,R.layout.guID_vIEw4 }; // 底部小点图片 private ImageVIEw[] dots; // 记录当前选中位置 private int currentIndex; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_guIDe); vIEws = new ArrayList<VIEw>(); // 初始化引导页视图列表 for (int i = 0; i < pics.length; i++) { VIEw vIEw = LayoutInflater.from(this).inflate(pics[i],null); if (i == pics.length - 1) { startBtn = (button) vIEw.findVIEwByID(R.ID.btn_login); startBtn.setTag("enter"); startBtn.setonClickListener(this); } vIEws.add(vIEw); } vp = (VIEwPager) findVIEwByID(R.ID.vp_guIDe); // 初始化adapter adapter = new GuIDeVIEwPagerAdapter(vIEws); vp.setAdapter(adapter); vp.setonPagechangelistener(new Pagechangelistener()); initDots(); } @OverrIDe protected voID onResume() { super.onResume(); } @OverrIDe protected voID onPause() { super.onPause(); // 如果切换到后台,就设置下次不进入功能引导页 SpUtils.putBoolean(WelcomeGuIDeActivity.this,AppConstants.FirsT_OPEN,true); finish(); } @OverrIDe protected voID onStop() { super.onStop(); } @OverrIDe protected voID onDestroy() { super.onDestroy(); } private voID initDots() { linearLayout ll = (linearLayout) findVIEwByID(R.ID.ll); dots = new ImageVIEw[pics.length]; // 循环取得小点图片 for (int i = 0; i < pics.length; i++) { // 得到一个linearLayout下面的每一个子元素 dots[i] = (ImageVIEw) ll.getChildAt(i); dots[i].setEnabled(false);// 都设为灰色 dots[i].setonClickListener(this); dots[i].setTag(i);// 设置位置tag,方便取出与当前位置对应 } currentIndex = 0; dots[currentIndex].setEnabled(true); // 设置为白色,即选中状态 } /** * 设置当前vIEw * * @param position */ private voID setCurVIEw(int position) { if (position < 0 || position >= pics.length) { return; } vp.setCurrentItem(position); } /** * 设置当前指示点 * * @param position */ private voID setCurDot(int position) { if (position < 0 || position > pics.length || currentIndex == position) { return; } dots[position].setEnabled(true); dots[currentIndex].setEnabled(false); currentIndex = position; } @OverrIDe public voID onClick(VIEw v) { if (v.getTag().equals("enter")) { enterMainActivity(); return; } int position = (Integer) v.getTag(); setCurVIEw(position); setCurDot(position); } private voID enterMainActivity() { Intent intent = new Intent(WelcomeGuIDeActivity.this,SplashActivity.class); startActivity(intent); SpUtils.putBoolean(WelcomeGuIDeActivity.this,true); finish(); } private class Pagechangelistener implements OnPagechangelistener { // 当滑动状态改变时调用 @OverrIDe public voID onPageScrollStateChanged(int position) { // arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。 } // 当前页面被滑动时调用 @OverrIDe public voID onPageScrolled(int position,float arg1,int arg2) { // arg0 :当前页面,及你点击滑动的页面 // arg1:当前页面偏移的百分比 // arg2:当前页面偏移的像素位置 } // 当新的页面被选中时调用 @OverrIDe public voID onPageSelected(int position) { // 设置底部小点选中状态 setCurDot(position); } }}
代码解析:左右滑动是使用VIEwPager来做的,切换4个不同的VIEw,监听VIEwPager的页面切换事件来更改底部指示点的切换,滑动到最后一个页面,设置按钮的点击事件,点击进入首页。
以上就是本文的全部内容,希望对大家学习AndroID软件编程有所帮助。
总结以上是内存溢出为你收集整理的Android启动屏实现左右滑动切换查看功能全部内容,希望文章能够帮你解决Android启动屏实现左右滑动切换查看功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)