ViewPager实现引导界面以及进入下一个activity解决办法
生活随笔
收集整理的這篇文章主要介紹了
ViewPager实现引导界面以及进入下一个activity解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這次項目中實現了用戶引導滑動圖片,到最后一張圖片的時候,我認為理想的是同時具備以下兩點:
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解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery 动画效果
- 下一篇: RNQOJ 98 逃亡的准备