1.引导页的4个界面布局,里面加载一张背景图片

插入到guide的界面布局中(这里不用fragment)

guide_background_fragment1.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. >
  6. <ImageView
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:background="@drawable/guide_background1"/>
  10. </LinearLayout>

guide_background_fragment2.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. >
  6. <ImageView
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:background="@drawable/guide_background2"/>
  10. </LinearLayout>

guide_background_fragment3.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. >
  6. <ImageView
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:background="@drawable/guide_background3"/>
  10. </LinearLayout>

guide_background_fragment4.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. >
  6. <ImageView
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:background="@drawable/guide_background4"/>
  10. </LinearLayout>

guide.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5.  
  6. <android.support.v4.view.ViewPager
  7. android:id="@+id/viewpager"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_gravity="center" />
  11.  
  12. <LinearLayout
  13. android:id="@+id/l1"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:orientation="horizontal"
  17. android:layout_centerInParent="true"
  18. android:layout_alignParentBottom="true"
  19. >
  20.  
  21. <ImageView
  22. android:id="@+id/imageV1"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:src="@drawable/login_point" />
  26.  
  27. <ImageView
  28. android:id="@+id/imageV2"
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:src="@drawable/login_point" />
  32.  
  33. <ImageView
  34. android:id="@+id/imageV3"
  35. android:layout_width="wrap_content"
  36. android:layout_height="wrap_content"
  37. android:src="@drawable/login_point" />
  38. <ImageView
  39. android:id="@+id/imageV4"
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:src="@drawable/login_point" />
  43. </LinearLayout>
  44. </RelativeLayout>

2.    适配器

GuidePagerAdapter.java

  1. import android.content.Context;
  2. import android.support.v4.view.PagerAdapter;
  3. import android.view.View;
  4. import android.view.ViewGroup;
  5. import android.widget.ArrayAdapter;
  6.  
  7. import java.util.List;
  8.  
  9. public class GuidePagerAdapter extends PagerAdapter{
  10. private Context context;
  11. private List<View> views;
  12. public GuidePagerAdapter(List<View> views, Context context) {
  13. this.context = context;
  14. this.views = views;
  15.  
  16. }
  17. @Override
  18. public int getCount() {
  19. // TODO Auto-generated method stub
  20. return views.size();
  21. }
  22. @Override
  23. public Object instantiateItem(ViewGroup container, int position) {
  24. container.addView(views.get(position));
  25. return views.get(position);
  26. }
  27. @Override
  28. public void destroyItem(ViewGroup container, int position, Object object) {
  29. container.removeView(views.get(position));
  30. }
  31. @Override
  32. public boolean isViewFromObject(View arg0, Object arg1) {
  33. // TODO Auto-generated method stub
  34. return (arg0 == arg1);
  35. }
  36.  
  37. }

Guide.java

  1. import android.app.Activity;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.support.v4.view.ViewPager;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.Window;
  8. import android.widget.Button;
  9. import android.widget.ImageView;
  10.  
  11. import java.util.ArrayList;
  12. import java.util.List;
  13.  
  14. /**
  15. * Created by zps on 2015/9/3.
  16. */
  17. public class Guide extends Activity implements ViewPager.OnPageChangeListener {
  18.  
  19. private List<View> listView;
  20. private ViewPager viewPager;
  21. private GuidePagerAdapter vpAdapter;
  22. private int[] dotsId = {R.id.imageV1, R.id.imageV2, R.id.imageV3, R.id.imageV4};
  23. private ImageView[] dotsView;
  24. private Button lijitiyanButton;
  25. @Override
  26. protected void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. requestWindowFeature(Window.FEATURE_NO_TITLE);
  29. setContentView(R.layout.view_pager);
  30. init();
  31. initDots();
  32.  
  33. }
  34.  
  35. private void initDots() {
  36. dotsView = new ImageView[listView.size()];
  37. for (int i = 0; i < listView.size(); i++) {
  38. dotsView[i] = (ImageView) findViewById(dotsId[i]);
  39. }
  40.  
  41. }
  42.  
  43. private void init() {
  44.  
  45. LayoutInflater inflater = LayoutInflater.from(this);
  46. listView = new ArrayList<View>();
  47. //获取View对象
  48. View view1 = inflater.inflate(R.layout.view_pager_img1, null);
  49. View view2 = inflater.inflate(R.layout.view_pager_img2, null);
  50. View view3 = inflater.inflate(R.layout.view_pager_img3, null);
  51. View view4 = inflater.inflate(R.layout.view_pager_img4, null);
  52.  
  53. //view对象放在List<view>中
  54. listView.add(view1);
  55. listView.add(view2);
  56. listView.add(view3);
  57. listView.add(view4);
  58. //List<view>放在适配器ViewPagerAdapter中
  59. vpAdapter = new GuidePagerAdapter(listView, this);
  60. //获取ViewPage,设置适配器;
  61. viewPager = (ViewPager) findViewById(R.id.viewpager);
  62. viewPager.setAdapter(vpAdapter);
  63. viewPager.addOnPageChangeListener(this);
  64. lijitiyanButton =(Button) view4.findViewById(R.id.lijitiyan_button);
  65. lijitiyanButton.setOnClickListener(new View.OnClickListener() {
  66. @Override
  67. public void onClick(View v) {
  68. Intent intent = new Intent(Guide.this,MainActivity.class);
  69. startActivity(intent);
  70. finish();
  71.  
  72. }
  73. });
  74.  
  75. }
  76.  
  77. @Override
  78. public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  79.  
  80. }
  81.  
  82. @Override
  83. public void onPageSelected(int position) {
  84. for (int i = 0; i < dotsId.length; i++) {
  85. if(i == position){
  86. dotsView[i].setImageResource(R.drawable.login_point_selected);
  87. }else {
  88. dotsView[i].setImageResource(R.drawable.login_point);
  89. }
  90. }
  91.  
  92. }
  93.  
  94. @Override
  95. public void onPageScrollStateChanged(int state) {
  96.  
  97. }
  98. }

3.引导页的判断:是否第一次进入

  1. public class GuideWelcome extends Activity{
  2. private static final int TIME = 2000;
  3. private static boolean isFirstIn = false;
  4. private static final int First = 1000;
  5. private static final int NoFirst = 1001;
  6. private Handler handler = new Handler(){
  7. @Override
  8. public void handleMessage(Message msg) {
  9. switch (msg.what){
  10. case First:
  11. FirstIn();
  12. break;
  13. case NoFirst:
  14. NoFirstIn();
  15. break;
  16. default:
  17. break;
  18. }
  19. }
  20.  
  21. };
  22.  
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.welcome);
  26. init();
  27. }
  28.  
  29. private void init() {
  30. //存储文件名为"gudiewelcome"
  31. SharedPreferences sharedPreferences = getSharedPreferences("guidewelcome",MODE_PRIVATE);
  32.  
  33. isFirstIn = sharedPreferences.getBoolean("isFirstIn",true);
  34. if(!isFirstIn){
  35. handler.sendEmptyMessageDelayed(NoFirst,TIME);
  36. }else {
  37. handler.sendEmptyMessageDelayed(First,TIME);
  38. //存储文件key为isFirstIn,值为false
  39. SharedPreferences.Editor editor = sharedPreferences.edit();
  40. editor.putBoolean("isFirstIn",false);
  41. editor.commit();
  42. }
  43.  
  44. }
  45. private void FirstIn(){
  46. Intent intent = new Intent(GuideWelcome.this,Guide.class);
  47. startActivity(intent);
  48. finish();
  49.  
  50. }
  51. private void NoFirstIn(){
  52. Intent intent = new Intent(GuideWelcome.this,TabMainActivity.class);
  53. startActivity(intent);
  54. finish();
  55. }
  56.  
  57. }

ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)的更多相关文章

  1. ViewPager实现引导页

    1. 要使用ViewPager,必须要创建 PagerAdapter. 这里创建一个 ViewPagerAdapter来继承PagerAdapter public class ViewPagerAda ...

  2. ViewPager之引导页

    一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 本文介绍ViewPager最基础的应用:在多个View之间进行切换,亦即ViewP ...

  3. android脚步---APP引导页添加

    package com.leadcore.uudatoutie; import java.util.ArrayList; import com.leadcore.uudatoutie.R; impor ...

  4. ViewPager滑动引导页

    ViewPager实现Animation动画引导页   http://blog.csdn.net/ye_scofield/article/details/44831357 SurfaceView实现动 ...

  5. ViewPager—01引导页的制作

    布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t ...

  6. ViewPager滑动到最后一页再向左滑动进入主界面

    在OnPageChangeListener中的onPageScrolled方法里判断 @Override public void onPageScrolled(int arg0, float arg1 ...

  7. ViewPager打造轮播图(Banner)\引导页(Guide)

    今年7月时,在Github发布了一个开源的Banner库,虽然Star不多,但还是有少部分人使用. Banner效果:  昨天,有使用此库的同学提出需求,想在引导页的时候用这个库并且最后一页有进入按钮 ...

  8. android使用ViewPager实现欢迎引导页

    android使用ViewPager实现欢迎引导页 大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面.当第二次启动的时候,则直接进入主界面. 这种效果一 ...

  9. Android项目实战(三):实现第一次进入软件的引导页

    最近做的APP接近尾声了,就是些优化工作了, 我们都知道现在的APP都会有引导页,就是安装之后第一次打开才显示的引导页面(介绍这个软件的几张可以切换的图) 自己做了一下,结合之前学过的 慕课网_Vie ...

随机推荐

  1. (2.11)Mysql之SQL基础——存储过程与变量

    (2.11)Mysql之SQL基础——存储过程 关键字:mysql存储过程 查看存储过程: []SELECT * FROM information_schema.ROUTINES WHERE ROUT ...

  2. HBase表预分区

    在创建Hbase表的时候默认一张表只有一个region,所有的put操作都会往这一个region中填充数据,当这个一个region过大时就会进行split.如果在创建HBase的时候就进行预分区则会减 ...

  3. STL学习笔记--关联式容器

    关联式容器依据特定的排序准则,自动为其元素排序.缺省情况下以operator<进行比较.set multiset map multimap是一种非线性的树结构,具体的说是采用一种比较高效的特殊平 ...

  4. Integration Services 变量

    如果没有变量,你会发现在ssis里面啥都干不成,和人没有灵魂一样 对系统变量唯一可配置的选项是指定变量在更改值时是否引发事件. 待续

  5. 文件下载—SSH框架文件下载

    1.准备下载的api组件 <dependency> <groupId>commons-io</groupId> <artifactId>commons- ...

  6. 70. Climbing Stairs(动态规划 爬台阶,一次只能爬1,2两节)

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  7. ng-深度学习-课程笔记-2: 神经网络中的逻辑回归(Week2)

    1 二分类( Binary Classification ) 逻辑回归是一个二分类算法.下面是一个二分类的例子,输入一张图片,判断是不是猫. 输入x是64*64*3的像素矩阵,n或者nx代表特征x的数 ...

  8. Vue学习笔记之Nodejs中的NPM使用

    0x00 NPM是什么 简单的说,npm就是JavaScript的包管理工具.类似Java语法中的maven,gradle,python中的pip. 0x01 NPM安装 傻瓜式的安装. 第一步:打开 ...

  9. 2018-2019-1 20189215 《Linux内核原理与分析》第九周作业

    进程的切换和系统 <庖丁解牛>第八章书本知识总结 进程调度的时机都与中断相关,中断是程序执行过程中的强制性转移,转移到操作系统内核相应的处理程序. 软中断也叫异常,分为故障.退出和陷阱(自 ...

  10. 【联网】虚拟机下Linux(终端)配置网络的方法

    这几天在虚拟机vmware上部署centos系统,想通过内部联网用yum命令安装必需的软件,但是一直不能静态地址联网,今天终于找到一个方法centos内部设置IP,对外联网.设置过程如下: 1.首先是 ...