java中引导页面的,Android实现欢迎引导页面
现在的大多数应用都会有一个欢迎引导页面,
需求分析:
程序安装后第一次启动:
启动页-->功能引导页-->应用主页
以后启动:
启动页-->应用主页
实现原理:
用SharedPreferences实现。
创建一个boolean的变量,默认值为true。
当判断这个变量是true的时候,说明是第一次运行,就跳转到另一个引导页面。
引导页面跳转到最后一张图片时,点击某按钮发生跳转事件,回到MainActivity,此时把变量的值改成false。
引导图效果用ViewPager可以很轻松的实现。
1.布局文件
splash.xml:
1
xmlns:tools="http://schemas.android.com/tools"3 android:layout_width="match_parent"4 android:layout_height="match_parent"5 tools:context=".SplashActivity">67android:layout_width="match_parent"9 android:layout_height="match_parent"10 android:adjustViewBounds="true"11 android:background="@drawable/welcome_android"12 android:scaleType="centerCrop"/>1314
guide.xml:
1
<?xml version="1.0" encoding="utf-8"?>2 android:layout_width="match_parent"4 android:layout_height="match_parent"5 android:orientation="vertical">67 android:id="@+id/viewpager"9 android:layout_width="match_parent"10 android:layout_height="match_parent"/>1112android:id="@+id/ll"14 android:layout_width="wrap_content"15 android:layout_height="wrap_content"16 android:layout_alignParentBottom="true"17 android:layout_centerHorizontal="true"18 android:layout_marginBottom="24.0dp"19 android:orientation="horizontal">2021android:layout_width="wrap_content"23 android:layout_height="wrap_content"24 android:layout_gravity="center_vertical"25 android:clickable="true"26 android:padding="15.0dip"27 android:src="@drawable/dot"/>2829android:layout_width="wrap_content"31 android:layout_height="wrap_content"32 android:layout_gravity="center_vertical"33 android:clickable="true"34 android:padding="15.0dip"35 android:src="@drawable/dot"/>3637android:layout_width="wrap_content"39 android:layout_height="wrap_content"40 android:layout_gravity="center_vertical"41 android:clickable="true"42 android:padding="15.0dip"43 android:src="@drawable/dot"/>4445android:layout_width="wrap_content"47 android:layout_height="wrap_content"48 android:layout_gravity="center_vertical"49 android:clickable="true"50 android:padding="15.0dip"51 android:src="@drawable/dot"/>525354
main_activity.xml默认
what_new_one.xml、what_new_two.xml、what_new_three.xml(将图片名称改下就行了):
1
<?xml version="1.0" encoding="utf-8"?>2 android:layout_width="match_parent"4 android:layout_height="match_parent">56android:layout_width="match_parent"8 android:layout_height="match_parent"9 android:layout_centerInParent="true"10 android:adjustViewBounds="false"11 android:focusable="true"12 android:scaleType="centerCrop"13 android:background="@drawable/guide_350_01"/>1415
what_new_four.xml:
1
<?xml version="1.0" encoding="utf-8"?>2 android:layout_width="match_parent"4 android:layout_height="match_parent">56android:layout_width="match_parent"8 android:layout_height="match_parent"9 android:layout_centerInParent="true"10 android:adjustViewBounds="false"11 android:background="@drawable/guide_350_04"12 android:focusable="true"13 android:scaleType="centerCrop"/>1415android:id="@+id/iv_start_weibo"17 android:layout_width="wrap_content"18 android:layout_height="wrap_content"19 android:layout_alignParentBottom="true"20 android:layout_centerHorizontal="true"21 android:layout_marginBottom="108dp"22 android:background="@drawable/whats_new_start_btn"23 android:focusable="true"/>2425
MainActivity.java不变
SplashActivity.java:
1
packagecn.eoe.leigo.splash;23importandroid.app.Activity;4importandroid.content.Intent;5importandroid.content.SharedPreferences;6importandroid.os.Bundle;7importandroid.os.Handler;8importandroid.os.Message;910
/** *//**11 *12 * @{# SplashActivity.java Create on 2013-5-2 下午9:10:0113 *14 * class desc: 启动画面 (1)判断是否是首次加载应用--采取读取SharedPreferences的方法15 * (2)是,则进入GuideActivity;否,则进入MainActivity (3)3s后执行(2)操作16 *17 *
18 * Copyright: Copyright(c) 201319 *
20 * @Version 1.021 * @Author Leo22 *23 *24*/25
publicclassSplashActivityextendsActivity{26booleanisFirstIn=false;2728privatestaticfinalintGO_HOME=1000;29privatestaticfinalintGO_GUIDE=1001;30//延迟3秒31privatestaticfinallongSPLASH_DELAY_MILLIS=3000;3233privatestaticfinalString SHAREDPREFERENCES_NAME="first_pref";3435
/** *//**36 * Handler:跳转到不同界面37*/38
privateHandler mHandler=newHandler(){3940 @Override41
publicvoidhandleMessage(Message msg){42
switch(msg.what){43caseGO_HOME:44 goHome();45break;46caseGO_GUIDE:47 goGuide();48break;49 }50super.handleMessage(msg);51 }52 };5354 @Override55
protectedvoidonCreate(Bundle savedInstanceState){56super.onCreate(savedInstanceState);57 setContentView(R.layout.splash);5859 init();60 }6162
privatevoidinit(){63//读取SharedPreferences中需要的数据64//使用SharedPreferences来记录程序的使用次数65SharedPreferences preferences=getSharedPreferences(66 SHAREDPREFERENCES_NAME, MODE_PRIVATE);6768//取得相应的值,如果没有该值,说明还未写入,用true作为默认值69isFirstIn=preferences.getBoolean("isFirstIn",true);7071//判断程序与第几次运行,如果是第一次运行则跳转到引导界面,否则跳转到主界面72
if(!isFirstIn){73//使用Handler的postDelayed方法,3秒后执行跳转到MainActivity74mHandler.sendEmptyMessageDelayed(GO_HOME, SPLASH_DELAY_MILLIS);75
}else{76 mHandler.sendEmptyMessageDelayed(GO_GUIDE, SPLASH_DELAY_MILLIS);77 }7879 }8081
privatevoidgoHome(){82 Intent intent=newIntent(SplashActivity.this, MainActivity.class);83 SplashActivity.this.startActivity(intent);84 SplashActivity.this.finish();85 }8687
privatevoidgoGuide(){88 Intent intent=newIntent(SplashActivity.this, GuideActivity.class);89 SplashActivity.this.startActivity(intent);90 SplashActivity.this.finish();91 }92}93
GuideActivity.java:
1
packagecn.eoe.leigo.splash;23importjava.util.ArrayList;4importjava.util.List;56importandroid.app.Activity;7importandroid.os.Bundle;8importandroid.support.v4.view.ViewPager;9importandroid.support.v4.view.ViewPager.OnPageChangeListener;10importandroid.view.LayoutInflater;11importandroid.view.View;12importandroid.widget.ImageView;13importandroid.widget.LinearLayout;14importcn.eoe.leigo.splash.adapter.ViewPagerAdapter;1516
/** *//**17 *18 * @{# GuideActivity.java Create on 2013-5-2 下午10:59:0819 *20 * class desc: 引导界面21 *22 *
23 * Copyright: Copyright(c) 201324 *
25 * @Version 1.026 * @Author Leo27 *28 *29*/30
publicclassGuideActivityextendsActivityimplementsOnPageChangeListener{3132privateViewPager vp;33privateViewPagerAdapter vpAdapter;34privateListviews;3536//底部小点图片37privateImageView[] dots;3839//记录当前选中位置40privateintcurrentIndex;4142 @Override43
protectedvoidonCreate(Bundle savedInstanceState){44super.onCreate(savedInstanceState);45 setContentView(R.layout.guide);4647//初始化页面48initViews();4950//初始化底部小点51initDots();52 }5354
privatevoidinitViews(){55 LayoutInflater inflater=LayoutInflater.from(this);5657 views=newArrayList();58//初始化引导图片列表59views.add(inflater.inflate(R.layout.what_new_one,null));60 views.add(inflater.inflate(R.layout.what_new_two,null));61 views.add(inflater.inflate(R.layout.what_new_three,null));62 views.add(inflater.inflate(R.layout.what_new_four,null));6364//初始化Adapter65vpAdapter=newViewPagerAdapter(views,this);6667 vp=(ViewPager) findViewById(R.id.viewpager);68 vp.setAdapter(vpAdapter);69//绑定回调70vp.setOnPageChangeListener(this);71 }7273
privatevoidinitDots(){74 LinearLayout ll=(LinearLayout) findViewById(R.id.ll);7576 dots=newImageView[views.size()];7778//循环取得小点图片79
for(inti=0; i{80 dots[i]=(ImageView) ll.getChildAt(i);81 dots[i].setEnabled(true);//都设为灰色82}8384 currentIndex=0;85 dots[currentIndex].setEnabled(false);//设置为白色,即选中状态86}8788
privatevoidsetCurrentDot(intposition){89if(position<0||position>views.size()-190
||currentIndex==position){91return;92 }9394 dots[position].setEnabled(false);95 dots[currentIndex].setEnabled(true);9697 currentIndex=position;98 }99100//当滑动状态改变时调用101@Override102
publicvoidonPageScrollStateChanged(intarg0){103 }104105//当当前页面被滑动时调用106@Override107
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){108 }109110//当新的页面被选中时调用111@Override112
publicvoidonPageSelected(intarg0){113//设置底部小点选中状态114setCurrentDot(arg0);115 }116117}118
ViewPagerAdapter.java:
1
packagecn.eoe.leigo.splash.adapter;23importjava.util.List;45importandroid.app.Activity;6importandroid.content.Context;7importandroid.content.Intent;8importandroid.content.SharedPreferences;9importandroid.content.SharedPreferences.Editor;10importandroid.os.Parcelable;11importandroid.support.v4.view.PagerAdapter;12importandroid.support.v4.view.ViewPager;13importandroid.view.View;14importandroid.view.View.OnClickListener;15importandroid.widget.ImageView;16importcn.eoe.leigo.splash.MainActivity;17importcn.eoe.leigo.splash.R;1819
/** *//**20 *21 * @{# ViewPagerAdapter.java Create on 2013-5-2 下午11:03:3922 *23 * class desc: 引导页面适配器24 *25 *
26 * Copyright: Copyright(c) 201327 *
28 * @Version 1.029 * @Author Leo30 *31 *32*/33
publicclassViewPagerAdapterextendsPagerAdapter{3435//界面列表36privateListviews;37privateActivity activity;3839privatestaticfinalString SHAREDPREFERENCES_NAME="first_pref";4041
publicViewPagerAdapter(Listviews, Activity activity){42this.views=views;43this.activity=activity;44 }4546//销毁arg1位置的界面47@Override48
publicvoiddestroyItem(View arg0,intarg1, Object arg2){49 ((ViewPager) arg0).removeView(views.get(arg1));50 }5152 @Override53
publicvoidfinishUpdate(View arg0){54 }5556//获得当前界面数57@Override58
publicintgetCount(){59
if(views!=null){60returnviews.size();61 }62return0;63 }6465//初始化arg1位置的界面66@Override67
publicObject instantiateItem(View arg0,intarg1){68 ((ViewPager) arg0).addView(views.get(arg1),0);69
if(arg1==views.size()-1){70 ImageView mStartWeiboImageButton=(ImageView) arg071 .findViewById(R.id.iv_start_weibo);72
mStartWeiboImageButton.setOnClickListener(newOnClickListener(){7374 @Override75
publicvoidonClick(View v){76//设置已经引导77setGuided();78 goHome();7980 }8182 });83 }84returnviews.get(arg1);85 }8687
privatevoidgoHome(){88//跳转89Intent intent=newIntent(activity, MainActivity.class);90 activity.startActivity(intent);91 activity.finish();92 }9394
/** *//**95 *96 * method desc:设置已经引导过了,下次启动不用再次引导97*/98
privatevoidsetGuided(){99 SharedPreferences preferences=activity.getSharedPreferences(100 SHAREDPREFERENCES_NAME, Context.MODE_PRIVATE);101 Editor editor=preferences.edit();102//存入数据103editor.putBoolean("isFirstIn",false);104//提交修改105editor.commit();106 }107108//判断是否由对象生成界面109@Override110
publicbooleanisViewFromObject(View arg0, Object arg1){111return(arg0==arg1);112 }113114 @Override115
publicvoidrestoreState(Parcelable arg0, ClassLoader arg1){116 }117118 @Override119
publicParcelable saveState(){120returnnull;121 }122123 @Override124
publicvoidstartUpdate(View arg0){125 }126127}128
java中引导页面的,Android实现欢迎引导页面相关推荐
- java中刷新页面的js,[Java教程]js页面刷新之实现框架内外刷新(整体、局部)
[Java教程]js页面刷新之实现框架内外刷新(整体.局部) 0 2016-10-12 12:00:56 这次总结的是框架刷新: 框架内外的按钮均可以定义网页重定向, 框架内部页面的按钮可以实现局部刷 ...
- java中引导页面的,设计模式之模板模式引导篇
在讲模板模式原理前,我们按照惯例,先来个生活中例子.茶馆需要开发一个自动的泡咖啡和泡茶的程序. 来源:凯哥Java(kaigejava) 我们先来看看泡咖啡和泡茶的步骤: 我们根据上图写代码实现: 泡 ...
- Android之app引导页(背景图片切换加各个页面动画效果)
转载:http://blog.csdn.net/lowprofile_coding/article/details/48037095 先看效果图: 1.显示三个页面的Activity 用view p ...
- JAVA中简单图形界面的创建
在java中提供了两套图形界面类:AWT组件和SWING组件. AWT组件jdk1.0的时候就推出的图形界面类,它是位于java.awt包下的类.当时在开发AWT组件时,采用C和C++的语言,并且还调 ...
- 通过哪些方法可以获取页面的html元素,JavaScript获取页面元素的常用方法详解
1.通过标签获取元素,返回一个数组 var li = document.getElementsByTagName('li');//标签获取元素 li[0].innerHTML;// 查看获取元素的内容 ...
- Java中运行Shell for Android
#! /system/bin/sh #最简单的一个shell,没什么功能 #需要注意的是必须是 #! /system/bin/sh开头(有空格) #和一般linux不同,如果用#!/bin/sh就会找 ...
- java除了android,Java中是否有类似android中的android.os.Handler的类?
没有一个默认.但是你可以让自己的自定义类来做类似的事情. 我做了一个这样的: import java.util.ArrayList; public class Handler extends Obje ...
- Java中beimage_GitHub - beconf/ImageBlurring: Android 中通过 Java 与 JNI 分别进行图片模糊;并且进行比较其运算速度。...
ImageBlurring Android 中通过 Java 与 JNI 分别进行图片模糊:并且进行比较其运算速度. 相关文章 备注消息 Screenshots RenderScript Fast B ...
- 简析Java中的Serializable与Android中的Parcelable序列化
文章目录 关于序列化 Serializable 简述原理 怎么使用 Parcelable Parcelable的实现原理 "包装公司"Parcel 装包 拆包 小结 Parcela ...
最新文章
- 胜任素质--哈佛大学教授麦克里兰 (McClelland)有效地预测外交官实际工作业绩的人员选拔方法...
- java两个文件夹比较路径_比较Java中两个文件的路径
- 【电商AI】商业情境中的机器学习|湾区人工智能
- 用cocos2d-android开发android游戏时调用box2d中的native本地函数问题
- wps里面函数怎么使用_wps表格函数及函数简单使用
- 首个智慧零碳码头:Hightopo参与天津中远海运金风智慧能源管控平台建设
- 【BZOJ5316】【JSOI2018】绝地反击
- ERDAS 2015 64位破解安装教程
- Django路由写法
- flash插件+linux,Linux下的flash插件
- 阿里云 云服务器最新优惠活动
- 监控dns流量有哪些方法?
- 台式计算机配置什么音响好,用什么办法才能让台式的电脑不用音响就有声音
- 如何用coda虚拟环境分隔多个tensorflow版本
- (深搜)蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。(深搜)
- 几何学观止(代数几何部分)
- 以太坊解析:默克尔树、世界状态、交易及其他
- PCI转串口卡的安装和使用
- Python_精灵和精灵组
- [joysticker]使用Ubuntu读取USB手柄/方向盘的输出控制
热门文章
- 济南职业学院计算机信息管理在哪个校区,计算机学院圆满完成省计算机信息管理专业教学指导方案开发...
- java数组随机排序_JAVA 生成随机数数组,并排序输出
- 计算机病毒是什么文件形式,【文件病毒】文件病毒的格式、危害、特点_什么是文件病毒_佰佰安全网...
- 皮一皮:自作多情的表率...
- 阿里面试:索引失效的场景有哪些?索引何时会失效?
- Java 16 正式发布!你还学得动吗?
- 程序员带娃有多“恐怖” ?!
- 因贡献Linux社区被Linus关注,受公司10万期权奖励!酷派重回大众视野...
- String长度有限制吗?是多少?还好我看过
- 今天开始,GitHub将启用main作为默认分支名,master将成为历史!