`
HU555U
  • 浏览: 31330 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android应用程序引导页

阅读更多
一般的Android程序首次进入时都会有一个引导页面,本文简单的实现了一下这个功能。主要是用ViewPager配合GridView实现。ViewPager用来装载引导图片,GridView用来显示底部的指示图标。附件里是一些资源图片。
先看一下效果图:
 
具体代码如下,包括一个主Activity和两个适配器:

主Activity
public class GuideActivityActivity extends Activity implements OnPageChangeListener {
    
	private List<View> views;
	private ViewPager viewPager;
	private GridView gridView;
	private GuidePagerAdapter pagerAdapter;
	private GuideGridAdapter gridAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guide);
        initData();
        initView();
    }

	private void initData() {
		int images[] = {R.drawable.guide_first, R.drawable.guide_second, R.drawable.guide_third};
		views = new ArrayList<View>();
		for (int i = 0; i < images.length; i++) {
			ImageView imageView = new ImageView(this);
			imageView.setImageResource(images[i]);
			imageView.setScaleType(ScaleType.FIT_XY);
			views.add(imageView);
		}
	}

	private void initView() {
		viewPager = (ViewPager) findViewById(R.id.guide_viewpager);
        gridView = (GridView) findViewById(R.id.guide_gridview);
       
        pagerAdapter = new GuidePagerAdapter();
        pagerAdapter.setViews(views);
        viewPager.setAdapter(pagerAdapter);
        viewPager.setCurrentItem(0);
		viewPager.setOnPageChangeListener(this);
		
		gridAdapter = new GuideGridAdapter(this);
		gridAdapter.setCountSize(views.size());
		gridView.setColumnWidth(12);
		gridView.setNumColumns(views.size());
		gridView.setAdapter(gridAdapter);
		gridAdapter.setSelectPoint(0);
		gridAdapter.notifyDataSetChanged();
	}

	@Override
	public void onPageScrollStateChanged(int arg0) {}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {}

	@Override
	public void onPageSelected(int position) {
		gridAdapter.setSelectPoint(position);
		gridAdapter.notifyDataSetChanged();
	}
	
	@Override
	protected void onPause() {
		super.onPause();
		if (null != views) {
			views.clear();
		} 
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		if(null != viewPager){
			viewPager.removeAllViews();
			viewPager.destroyDrawingCache();
		}
	}
}

GridView和ViewPager的适配器
public class GuideGridAdapter extends BaseAdapter {
	
	private int size;
	private int index = 0;
	private Context context;

	public GuideGridAdapter(Context context) {
		this.context = context;
	}

	@Override
	public int getCount() {
		return size;
	}

	@Override
	public Object getItem(int position) {
		return null;
	}
	
	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		ViewHolder viewHolder = null;
		if (convertView == null) {
			ImageView imageView = new ImageView(context);
			convertView = imageView;
			viewHolder = new ViewHolder();
			viewHolder.dotView = imageView;
			convertView.setTag(viewHolder);
		} else {
			viewHolder = (ViewHolder) convertView.getTag();
		}

		if (index == position) {
			viewHolder.dotView.setImageResource(R.drawable.point_select);
		} else {
			viewHolder.dotView.setImageResource(R.drawable.point_noselect);
		}
		
		return convertView;
	}

	static class ViewHolder {
		ImageView dotView = null;
	}

	/**
	 * 设置选中页 高亮显示
	 * @param indexPoint 当前选中页索引
	 */
	public void setSelectPoint(int indexPoint) {
		this.index = indexPoint;
	}

	/**
	 * 设置页码总数
	 * @param countSize 页码总数
	 */
	public void setCountSize(int countSize) {
		this.size = countSize;
	}
}

public class GuidePagerAdapter extends PagerAdapter {
	
	private List<View> views;
	
	public void setViews(List<View> views) {
		this.views = views;
	}
	
	@Override
	public int getCount() {
		return views.size();
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == (arg1);
	}
	
	@Override
	public void destroyItem(View arg0, int arg1, Object arg2){
		((ViewPager) arg0).removeView(views.get(arg1));
	}
	
	@Override
	public Object instantiateItem(View arg0, int arg1) {
		((ViewPager) arg0).addView(views.get(arg1), 0);
		return views.get(arg1);
	}

}

布局文件guide.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
	<GridView 
		android:id="@+id/guide_gridview"
		android:layout_width="70.0dip" 
		android:layout_height="25dip"
		android:focusable="false" 
		android:focusableInTouchMode="false"
		android:background="#00000000"
    	android:cacheColorHint="#00000000"
    	android:layout_alignParentBottom="true"
    	android:layout_marginBottom="10.0dip"
    	android:layout_marginTop="10.0dip"
    	android:layout_centerHorizontal="true">
    </GridView>
    <android.support.v4.view.ViewPager
    	android:id="@+id/guide_viewpager"
    	android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
    	android:layout_above="@id/guide_gridview"/>
</RelativeLayout>
分享到:
评论

相关推荐

    Android应用程序实现欢迎引导页面的方法实现

    在Android应用程序开发中,引导页面(也称为启动引导页或新手引导)是向用户介绍应用功能、提升用户体验的重要部分。通常,这些页面会在用户首次打开应用时显示,以引导他们了解应用的核心价值和操作方式。本篇文章...

    AndroidAPP程序引导页面

    标题“Android APP程序引导页面”暗示了我们要讨论的是如何在Android应用程序中创建并实现一个自定义的引导页面。在Android中,这种功能可以通过多种方式实现,比如使用ViewPager、Fragment、PageTransformer等组件...

    Android应用程序实现欢迎引导页面的方法实现 (可运行)

    综上所述,实现Android应用程序的欢迎引导页面主要涉及布局设计、SharedPreferences的使用、引导页面的展示逻辑以及可能的自定义动画效果。遵循以上步骤,开发者可以创建一个既美观又实用的引导流程,帮助新用户更好...

    Android开发 程序引导源码

    在Android应用开发中,程序引导页(LeadPage)通常用于首次启动时展示品牌形象、功能介绍或用户协议等信息,以提升用户体验。本教程主要聚焦于Android程序引导源码的实现,帮助开发者理解如何构建这样的页面。 一、...

    android 引导页面

    在Android开发中,引导页面(Splash Screen)通常用于在应用程序启动时展示品牌信息或功能预览,以提高用户体验。在给定的标题“android 引导页面”和描述“android 引导页面,用的是pageView左右滑动!”中,我们...

    android应用源码仿微信用户引导页源码.zip

    【标题】"Android应用源码仿微信用户引导页源码.zip"揭示了这是一个关于Android应用程序开发的源代码,特别地,它仿照了微信应用程序的用户引导页面。用户引导页通常在新用户首次启动应用时出现,用以展示应用的核心...

    安卓欢迎界面引导页面viewpager相关-AndroidApp引导页面效果实现.rar

    2. **引导页面设计**:引导页面通常包含一组精心设计的静态图像,每个图像都强调了应用程序的一个关键功能或特性。在实现时,这些图像会被加载到ViewPager的各个页面中。 3. **布局文件**:在Android项目中,引导...

    Android 仿Uber引导页

    在Android开发中,Uber应用程序的引导页是一种常见的用户体验设计,用于在用户首次打开应用时提供一个引人入胜的互动教程或展示应用的核心功能。这种引导页通常包含一系列的全屏视图,用户可以通过滑动浏览,从而在...

    Android引导页+源代码工程

    Android编写的程序引导页,如酷狗音乐首次安装打开时的滑动图片引导页,是这种设计的典型实例。本文将深入探讨Android引导页的实现原理、设计策略以及源代码解析。 1. **实现原理** - **静态引导页**:最简单的...

    android之ViewPager引导页(动态加载指示器)

    引导页通常包含多个页面,每个页面展示一个功能或特性,以帮助用户更好地理解和使用应用程序。本篇文章将深入探讨如何利用ViewPager创建动态加载指示器的Android引导页。 首先,我们需要了解ViewPager的基本用法。...

    Android项目中的欢迎界面和引导页:动画和ViewPager

    在Android应用程序开发中,欢迎界面(Splash Screen)和引导页(Onboarding)是常见的用户体验设计元素,它们在用户首次打开应用或更新应用后提供一种视觉介绍。这些页面通常包含品牌展示、功能介绍以及可能的权限...

    Android开发 引导页动画UI界面效果(个人整理08)

    `JavaApk源码说明.txt`可能是对代码实现的简要说明,而`Demo_welcome`可能是实际的代码示例或演示应用程序。 对于源码的分析,`JavaApk源码说明.txt`应包含了关于如何组织代码、实现动画效果和处理用户交互的指导。...

    Android应用源码之欢迎引导页面.zip

    9. **自定义启动屏幕**:在某些情况下,开发者可能会希望自定义应用程序的启动屏幕(Launch Screen),这通常涉及到修改AndroidManifest.xml文件中的主题设置。 10. **测试与调试**:在不同设备和Android版本上测试...

    Android程序更新后的引导页

    在Android应用开发中,"Android程序更新后的引导页"是一个重要的设计策略,旨在帮助用户适应应用程序的更新变化,特别是当新版本中某些功能键的位置发生了移动。引导页通常被称为"新手教程"或"引导教程",它通过一...

    高仿马蜂窝Android App 引导页

    在Android应用开发中,引导页(Splash Screen)是用户打开应用程序时首先看到的页面,它通常展示品牌信息、产品特色或者进行必要的初始化操作。"高仿马蜂窝Android App 引导页"是一个示例项目,它实现了类似马蜂窝...

    Android常见的4种引导页splash、viewpage,viewflipper,scrollview

    在Android应用开发中,引导页(Splash Screen)是用户打开应用程序时首先看到的页面,它通常展示品牌标识、产品特色或者简短的操作指南。本文将详细介绍Android应用中四种常见的引导页实现方式:Splash、ViewPager、...

    Android引导页设计

    引导页通常出现在应用程序首次启动或更新后,其目的是向用户介绍新的功能、展示产品特性或者提供品牌形象的展示空间。本篇文章将深入探讨Android引导页设计的各个方面,包括设计原则、实现方式以及优化策略。 首先...

Global site tag (gtag.js) - Google Analytics