【android】ViewPager实现引导界面以及进入下一个activity解决办法
来源:互联网 发布:php exec 返回值 编辑:程序博客网 时间:2024/05/01 13:32
这次项目中实现了用户引导滑动图片,到最后一张图片的时候,我认为理想的是同时具备以下两点:
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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="5" /> <Button android:id="@+id/start" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/guide_start" android:visibility="gone" > </Button> <TextView android: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.ViewPager android: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.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);}}
- 【android】ViewPager实现引导界面以及进入下一个activity解决办法
- ViewPager实现引导界面以及进入下一个activity解决办法
- ViewPager实现引导界面以及进入下一个activity解决办法
- ViewPager实现引导界面以及进入下一个activity解决办法
- ViewPager实现引导界面以及进入下一个activity解决办法
- ViewPager实现程序引导界面
- 利用Viewpager实现引导界面
- android实现App第一次进入时的引导学习界面
- android 第一次进入的引导界面实现方法
- Android实现第一次进入App时的引导学习界面
- Android通过ViewPager实现引导界面(一)
- Android开发使用Viewpager实现程序引导界面
- Activity中的viewPager进入指定界面
- Android之ViewPager实现引导页(第一次打开App进入引导页,第二次直接进入APP主页面)
- 引导页的实现,用ViewPager,底下有小圆点显示以及滑动进入主页面
- 【Android UI设计与开发】2.引导界面(二)使用ViewPager实现欢迎引导页面
- Android学习之界面篇(六)ViewPager学习与Android引导界面的实现
- ViewPager实现移折通左右滑动引导界面
- fckeditor 补充
- sonar 分析结果各统计项的含义
- hbase0.94新特性
- 视频显示分辨率标准格式大全
- 发现android一个特点
- 【android】ViewPager实现引导界面以及进入下一个activity解决办法
- RMAN 整库备份异机恢复流程
- MySql切分字符串,SUBSTRING用法
- MD5字符串加密算法
- hbase bulkload
- Fedora14选择默认英文安装的 如何手动下载中文包, 设中文为默认语言??
- Spring学习笔记 关于spring 2.x中dependency-check标签与Spring3中的实现方式
- hbase表结构设计研究(不断更新)
- eclipse报出的错误