这次项目中实现了用户引导滑动图片,到最后一张图片的时候,我认为理想的是同时具备以下两点:

1)用户可以点击上面的“开始使用”这样的按钮可以进入主界面;

2)用户接着滑动下一个图片的手势而进入主界面;

3)用户在引导界面点击返回键的时候直接进入主界面;

增加“开始使用”按钮方式:

可以定义一个layout的xml再加载:一个LinearLayout,里面一个button。默认button是“gone”,

xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/guide_item"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="5" /><Buttonandroid:id="@+id/start"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/guide_start"android:visibility="gone" ></Button><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1" /></LinearLayout>

button上下增加了textview,我是为了控制button在整个界面的位置。

引导的图片是其背景即可。

实现如下:

guide_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent" ><android.support.v4.view.ViewPagerandroid:id="@+id/guide_view"android:layout_width="fill_parent"android:layout_height="fill_parent" /></LinearLayout>

GuideActivity.java:

/*** 引导界面* @author maria* 2012-07-19*/
package com.maria.test;import java.util.ArrayList;
import java.util.List;
import com.trunkbow.talker.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;public class GuideActivity extends Activity {private ViewPager viewPager;private List<View> mImageViews; // 滑动的图片集合private int[] imageResId; // 图片IDprivate int currentItem = 0; // 当前图片的索引号private GestureDetector gestureDetector; // 用户滑动/** 记录当前分页ID */private int flaggingWidth;// 互动翻页所需滚动的长度是当前屏幕宽度的1/3@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.guide_activity);gestureDetector = new GestureDetector(new GuideViewTouch());// 获取分辨率DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);flaggingWidth = dm.widthPixels / 3;imageResId = new int[] { R.drawable.guide_1, R.drawable.guide_2 };mImageViews = new ArrayList<View>();// 初始化图片资源LayoutInflater viewInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);// 0View convertView0 = viewInflater.inflate(R.layout.guide_item, null);LinearLayout linearLayout0 = (LinearLayout) convertView0.findViewById(R.id.guide_item);linearLayout0.setBackgroundResource(imageResId[0]);mImageViews.add(linearLayout0);// 1View convertView1 = viewInflater.inflate(R.layout.guide_item, null);LinearLayout linearLayout1 = (LinearLayout) convertView1.findViewById(R.id.guide_item);linearLayout1.setBackgroundResource(imageResId[1]);Button btn = (Button) convertView1.findViewById(R.id.start);btn.setVisibility(View.VISIBLE);btn.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubGoToMainActivity();}});mImageViews.add(linearLayout1);viewPager = (ViewPager) findViewById(R.id.guide_view);viewPager.setAdapter(new MyAdapter());// 设置填充ViewPager页面的适配器// 设置一个监听器,当ViewPager中的页面改变时调用viewPager.setOnPageChangeListener(new MyPageChangeListener());}@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {if (gestureDetector.onTouchEvent(event)) {event.setAction(MotionEvent.ACTION_CANCEL);}return super.dispatchTouchEvent(event);}private class GuideViewTouch extends SimpleOnGestureListener {@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (currentItem == 1) {if (Math.abs(e1.getX() - e2.getX()) > Math.abs(e1.getY()- e2.getY())&& (e1.getX() - e2.getX() <= (-flaggingWidth) || e1.getX() - e2.getX() >= flaggingWidth)) {if (e1.getX() - e2.getX() >= flaggingWidth) {GoToMainActivity();return true;}}}return false;}}/*** 进入主界面*/void GoToMainActivity() {Intent i = new Intent(GuideActivity.this, MainActivivty.class);startActivity(i);finish();}/*** 当ViewPager中页面的状态发生改变时调用* * @author Administrator* */private class MyPageChangeListener implements OnPageChangeListener {/*** This method will be invoked when a new page becomes selected.* position: Position index of the new selected page.*/public void onPageSelected(int position) {currentItem = position;}public void onPageScrollStateChanged(int arg0) {}public void onPageScrolled(int arg0, float arg1, int arg2) {}}/*** 填充ViewPager页面的适配器* * @author Administrator* */private class MyAdapter extends PagerAdapter {@Overridepublic int getCount() {return imageResId.length;}@Overridepublic Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(mImageViews.get(arg1));return mImageViews.get(arg1);}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView((View) arg2);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}@Overridepublic void finishUpdate(View arg0) {}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (keyCode == KeyEvent.KEYCODE_BACK) {GoToMainActivity();return false;}return super.onKeyDown(keyCode, event);}}

/**
* @author 张兴业
* 邮箱:xy-zhang#163.com
* android开发进阶群:278401545
*
*/

转载于:https://www.cnblogs.com/xyzlmn/archive/2012/07/19/3168108.html

ViewPager实现引导界面以及进入下一个activity解决办法相关推荐

  1. Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)

     运行有问题或需要源码请点赞关注收藏后评论区留言~~ 显示Intent和隐式Intent Intent是各个组件之间的信息沟通的桥梁,既能在Activity之间沟通,又能在Activity与Servi ...

  2. linux三个命令模式切换,ubuntu16.04命令行模式和图形界面互相切换的两种解决办法,...

    ubuntu16.04命令行模式和图形界面互相切换的两种解决办法, 在ubuntu中,我们可以有两种工作模式,一种是纯字符的命令行模式,这种界面没有那么好操作,而且对命令要求比较熟悉,比较适合专业人士 ...

  3. 组件服务-计算机-我的电脑出现红色向下箭头的解决办法

    组件服务-计算机-我的电脑出现红色向下箭头的解决办法 2007-08-18 01:06 在"服务"里找到这三个服务,都启动就行了 Distributed Transaction C ...

  4. 文件下载时设置文件名以及中文被转换成下划线的解决办法

    文件下载时中文被转换成下划线的解决办法 先上问题 解决办法很简单,直接在返回的时候加以下代码 response.setContentType("application/force-downl ...

  5. html的双下划线的解决办法

    html的双下划线的解决办法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  6. 关于CAN通信速率在某些频段下不通的解决办法

    关于CAN通信速率在某些频段下不通的解决办法 现象描述 解决办法 现象描述 我在某个项目的时候遇到CAN通信只能够在50k.100k.800k和1000k下进行.而我要在500k通信速率下进行收发,但 ...

  7. ViewPager之引导界面---实现欢迎引导页面

    最近在看ViewPager,于是乎弄个引导界面来玩玩..... 引导界面,采用现在比较主流的方式:左右滑动加载:小圆点提示:在最后一个页面,点击button,进入功能界面 第一种: ViewFlipp ...

  8. 黑苹果成功引导到安装界面,USB鼠标无法使用的解决办法

    opencore黑苹果成功引导到安装界面,但USB鼠标无法使用,怎么办?其实官网里有答案: 无法在选择器中选择任何内容这是由于某些原因不兼容的键盘驱动程序: config.plist中禁用PollAp ...

  9. ubuntu进入终端界面输入密码错误login incorrect的解决办法

    在给ubuntu系统安装nvidia驱动时,会禁用图像界面服务.这时候进入终端界面时会要求输入登录账号密码.然而有的人可能在输入密码时总提示密码不正确或无法登录. 这里排除密码输错的情况.介绍另一种导 ...

最新文章

  1. 自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)
  2. Java面试题整理,连续四年百度Java岗必问面试题
  3. GeoServer怎样修改线性地图的颜色样式
  4. python符号运算_用Python做科学计算-SymPy符号运算
  5. Python中的高阶函数reduce
  6. PageOffice实现最简单的Java导出Word中的数据
  7. 简单点赞效果html,js实现点赞效果
  8. 光遇安卓服务器维修,《光遇》渠道服更换手机解决办法
  9. 程序员,你还要迷茫多久?
  10. localStorage sessionStorage
  11. Filecoin网络目前总质押量约为4110万枚FIL
  12. 如何查看 Windows10 版本号
  13. Scaleform在游戏制作中的使用
  14. mysql python用法_python-mysql基本用法
  15. 李航《统计学习方法》多项式函数拟合问题--最小二乘法
  16. matlab建模总结,数学建模方法自己归纳总结(建模参考用,包含相应例题以及MATLAB...
  17. java爬虫12306_java爬虫12306,爬取所有的站点和车次,并导入postgreSQL数据库
  18. ATAPI(磁盘端口驱动)级文件保护简单实现
  19. 20151210编译高通的qca9531的wireless版本 修改版本4
  20. Fiddler抓包工具详解

热门文章

  1. Linux 修改主机名 和 ip 映射关系
  2. java图像处理之实现任意角度图像旋转
  3. A Common Framework for Interactive Texture Transfer(CVPR 2018)学习笔记
  4. String, StringBuilder 与StringBuffer的区别与联系
  5. 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
  6. geometry-api-java 学习笔记(五)多边形 Polygons
  7. oCPC:计算广告出价策略
  8. 使用JestClient操作ElasticSearch
  9. 关于SparkMLlib的基础数据结构Spark-MLlib-Basics
  10. [译]GC专家系列1:理解Java垃圾回收