多语言展示
当前在线:927今日阅读:39今日分享:10

Android实现左右滑动的指引效果

在一般情况下,Android左右滑动的指引效果是指在应用第一次启动时,会显示一些帮助界面,用户可通过手指左右滑动来了解应用信息。当用户滑动到最后一页时,可通过点击进入游戏应用。
工具/原料
1

ViewPager类

2

android-support-v4.jar

方法/步骤
1

编写引导界面布局文件,内容如下:activivty_guide_view_01.xml                                           

2

编写引导界面的头文件布局文件,内容如下:activity_guide_view_item_header.xml                                   

3

编写引导界面Activity的布局文件,内容如下:activity_guide_view.xml                                                           

4

编写引导界面Activity,其代码如下:/** *  */package com.i114gbox.aglieguy;import java.util.ArrayList;import java.util.List;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.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.ImageView;import android.widget.TextView;import com.i114gbox.aglieguy.utils.CustomProgressDialogExitTaskUtils;import com.i114gbox.sdk.activity.I114gBoxActivity;import com.i114gbox.sdk.activity.dialog.I114gBoxProgressDialog;import com.i114gbox.sdk.config.I114gBoxConfig;import com.i114gbox.sdk.constant.I114gBoxConstant;import com.i114gbox.sdk.utils.I114gBoxCollectActivityUtils;import com.i114gbox.sdk.utils.I114gBoxLogUtils;import com.i114gbox.sdk.utils.I114gBoxResourceUtils;/** * 引导Activity *  * @author SJC *  */public class GuideViewActivity extends I114gBoxActivity implements OnClickListener { private static String TAG = 'GuideViewActivity'; private Context ctx = null; private List pageViews; private ImageView[] imageViews; private ImageView imageView; private ViewGroup main; private ViewGroup group; private ViewPager viewPager; private I114gBoxProgressDialog i114gBoxProgressDialog = null; private ViewGroup viewGroup; private int count; @Override protected void onCreate(Bundle savedInstanceState) { I114gBoxLogUtils.d(TAG, 'The onCreate method execute.'); I114gBoxConfig.setDebugEnable(true);// 打开LOG super.onCreate(savedInstanceState); I114gBoxCollectActivityUtils.getInstance().addActivity(this);// 收集Activity ctx = this; count = mBaseSettings.getInt( I114gBoxConstant.PREFERENCE_KEY_LAUNCH_COUNT, 0); I114gBoxLogUtils.i(TAG, 'count:' + count); if (count != 0) {// 当应用并不是第一次启动时 Intent intent = new Intent(ctx, MainActivity.class); ctx.startActivity(intent); overridePendingTransition( I114gBoxResourceUtils.getAnimId(ctx, 'zoomin'), I114gBoxResourceUtils.getAnimId(ctx, 'zoomout')); } else {// 当应用为第一次启动时 count++; mBaseSettings .edit() .putInt(I114gBoxConstant.PREFERENCE_KEY_LAUNCH_COUNT, count) .commit(); LayoutInflater layoutInflater = getLayoutInflater(); pageViews = new ArrayList(); // 加载左右滑动指引效果的图片布局资源 pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_01'), null)); pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_02'), null)); pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_03'), null)); pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_04'), null)); pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_05'), null)); pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_06'), null)); pageViews.add(layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activivty_guide_view_07'), null)); imageViews = new ImageView[pageViews.size()]; main = (ViewGroup) layoutInflater.inflate(I114gBoxResourceUtils .getLayoutId(ctx, 'activity_guide_view'), null); group = (ViewGroup) main.findViewById(I114gBoxResourceUtils.getId( ctx, 'll_view_group')); viewPager = (ViewPager) main.findViewById(I114gBoxResourceUtils .getId(ctx, 'vp_guide_view')); for (int i = 0; i < pageViews.size(); i++) { imageView = new ImageView(ctx); imageView.setLayoutParams(new LayoutParams(20, 20)); imageView.setPadding(20, 0, 20, 0); imageViews[i] = imageView; // 默认第一张图为显示状态 if (i == 0) { imageViews[i].setBackgroundResource(I114gBoxResourceUtils .getDrawableId(ctx, 'guide_view_page_indicator_focused')); } else { imageViews[i].setBackgroundResource(I114gBoxResourceUtils .getDrawableId(ctx, 'guide_view_page_indicator')); } group.addView(imageViews[i]); } // 设置布局文件 setContentView(main); // 设置引导界面适配器 viewPager.setAdapter(new GuideViewPagerAdapter()); // 设置引导界面监听器 viewPager .setOnPageChangeListener(new GuideViewPageChangeListener()); TextView guideExitTextView = (TextView) main .findViewById(I114gBoxResourceUtils.getId(ctx, 'tv_guide_view_exit')); TextView guideHomeTextView = (TextView) main .findViewById(I114gBoxResourceUtils.getId(ctx, 'tv_guide_view_home')); viewGroup = (ViewGroup) layoutInflater.inflate( I114gBoxResourceUtils.getLayoutId(ctx, 'activivty_guide_view_07'), null); guideExitTextView.setOnClickListener(this); guideHomeTextView.setOnClickListener(this); } } /** * 引导界面适配器 *  * @author SJC *  */ class GuideViewPagerAdapter extends PagerAdapter { /** 获取指引的数量 **/ @Override public int getCount() { return pageViews.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { I114gBoxLogUtils.d('GuideViewPagerAdapter', 'The isViewFromObject method execute.'); return arg0 == arg1; } /** 获取指引的位置 **/ @Override public int getItemPosition(Object object) { I114gBoxLogUtils.d('GuideViewPagerAdapter', 'The getItemPosition method execute.'); I114gBoxLogUtils.i('GuideViewPagerAdapter', 'The item position:' + super.getItemPosition(object)); return super.getItemPosition(object); } @Override public void destroyItem(ViewGroup container, int position, Object object) { I114gBoxLogUtils.d('GuideViewPagerAdapter', 'The destroyItem method execute.'); I114gBoxLogUtils.i('GuideViewPagerAdapter', 'position:' + position); container.removeView(pageViews.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { I114gBoxLogUtils.d('GuideViewPagerAdapter', 'The instantiateItem method execute.'); I114gBoxLogUtils.i('GuideViewPagerAdapter', 'position:' + position); container.addView(pageViews.get(position)); return pageViews.get(position); } @Override public void restoreState(Parcelable state, ClassLoader loader) { I114gBoxLogUtils.d('GuideViewPagerAdapter', 'The restoreState method execute.'); super.restoreState(state, loader); } @Override public Parcelable saveState() { I114gBoxLogUtils.d('GuideViewPagerAdapter', 'The saveState method execute.'); return super.saveState(); } } /** * 引导界面监听器 *  * @author SJC *  */ class GuideViewPageChangeListener implements OnPageChangeListener { @Override public void onPageScrollStateChanged(int arg0) { I114gBoxLogUtils.d('GuideViewPageChangeListener', 'The onPageScrollStateChanged method execute.'); I114gBoxLogUtils.i(TAG, 'arg0:' + arg0); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { I114gBoxLogUtils.d('GuideViewPageChangeListener', 'The onPageScrolled method execute.'); I114gBoxLogUtils.i('GuideViewPageChangeListener', 'arg0:' + arg0 + '|' + 'arg1:' + arg1 + '|' + 'arg2:' + arg2); } @Override public void onPageSelected(int arg0) { I114gBoxLogUtils.d('GuideViewPageChangeListener', 'The onPageSelected method execute.'); I114gBoxLogUtils.i('GuideViewPageChangeListener', 'arg0:' + arg0); for (int i = 0; i < imageViews.length; i++) { imageViews[arg0] .setBackgroundResource(I114gBoxResourceUtils .getDrawableId(ctx, 'guide_view_page_indicator_focused')); if (arg0 != i) { imageViews[i].setBackgroundResource(I114gBoxResourceUtils .getDrawableId(ctx, 'guide_view_page_indicator')); } } } } @Override public void onClick(View v) { if (v.getId() == I114gBoxResourceUtils.getId(ctx, 'tv_guide_view_exit')) { CustomProgressDialogExitTaskUtils customProgressDialogAsyncTaskUtils = new CustomProgressDialogExitTaskUtils( ctx, i114gBoxProgressDialog); customProgressDialogAsyncTaskUtils.execute(2000);// 执行Task } else if (v.getId() == I114gBoxResourceUtils.getId(ctx, 'tv_guide_view_home')) { Intent intent = new Intent(ctx, MainActivity.class); ctx.startActivity(intent); overridePendingTransition( I114gBoxResourceUtils.getAnimId(ctx, 'zoomin'), I114gBoxResourceUtils.getAnimId(ctx, 'zoomout')); } } @Override protected void onDestroy() { I114gBoxLogUtils.d(TAG, 'The onDestory method execute.'); if (null != i114gBoxProgressDialog) { i114gBoxProgressDialog.dismiss(); i114gBoxProgressDialog = null; } super.onDestroy(); } /** 进入游戏 **/ public void enterGame(View view) { I114gBoxLogUtils.d(TAG, 'enter game'); Intent intent = new Intent(viewGroup.getContext(), MainActivity.class); viewGroup.getContext().startActivity(intent); overridePendingTransition( I114gBoxResourceUtils.getAnimId(ctx, 'zoomin'), I114gBoxResourceUtils.getAnimId(ctx, 'zoomout')); }}

注意事项
1

当应用启动时,将启动数(初始为0)加1

2

将启动数保存到SharedPreferences中,第一次启动游戏应用,则出现引导界面;随后启动游戏应用时,则直接进入游戏中。

推荐信息