今天项目需要加一个引导页面,所以自己百度百度,写了一个demo,特此记录
首先MainActivity,初始化数据等操作,代码中有注释
package com.dongzk.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;
/****
* ViewPager 引导页面
* @author Dong
*/
public class MainActivity extends Activity implements OnPageChangeListener, OnClickListener {
private ViewPager viewParger;
private List<View> views;
// 引导图片资源
private static final int[] pics = {R.drawable.guide1, R.drawable.guide2,R.drawable.guide3};
private ViewPagerAdapter adapter;
private ImageView[] points; //小点点
private int currentIndex; //当前页面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
/****
* 初始化View
* 创建一个list存储引导页的图片
*/
private void initView() {
views = new ArrayList<View>();
viewParger = (ViewPager) this.findViewById(R.id.viewpager);
adapter = new ViewPagerAdapter(views);
}
/****
* 初始化引导页图片数据
*/
private void initData() {
// 定义一个布局并设置参数
LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
// 初始化引导图片列表
for (int i = 0; i < pics.length; i++) {
ImageView iv = new ImageView(this);
iv.setLayoutParams(mParams);
//防止图片不能填满屏幕
iv.setScaleType(ScaleType.FIT_XY);
//加载图片资源
iv.setImageResource(pics[i]);
views.add(iv);
}
View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.first_activity, null);
Button btn = (Button) view.findViewById(R.id.button_lijitiyan);
btn.setOnClickListener(this);
views.add(view);
// 设置数据
viewParger.setAdapter(adapter);
// 设置监听
viewParger.setOnPageChangeListener(this);
// 初始化底部小点
initPoint();
}
/****
* 初始化原点
*/
private void initPoint() {
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.ll);
points = new ImageView[views.size()];
Log.d("MainActivity", "size = " + views.size() +"length = " + pics.length);
// 循环取得小点图片
for (int i = 0; i < views.size(); i++) {
// 得到一个LinearLayout下面的每一个子元素
points[i] = (ImageView) linearLayout.getChildAt(i);
// 默认都设为灰色
points[i].setEnabled(true);
// 给每个小点设置监听
// points[i].setOnClickListener(this);
// 设置位置tag,方便取出与当前位置对应
points[i].setTag(i);
}
// 设置当面默认的位置
currentIndex = 0;
// 设置为白色,即选中状态
points[currentIndex].setEnabled(false);
}
//滑动状态改变时调用
@Override
public void onPageScrollStateChanged(int arg0) {
// Log.d("MainActivity", "onPageScrollStateChanged ----- " + arg0);
}
//当前页面滑动时调用
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// Log.d("MainActivity", "onPageScrolled ----- " + "arg0 = "+arg0 +" | arg1 = "+ arg1 + " || arg2 = " +arg2);
}
//新的页面被选中时调用
@Override
public void onPageSelected(int positon) {
setCurDot(positon);
}
//新的页面被选中时调用
//点击小标点的时候也切换界面
@Override
public void onClick(View v) {
Intent intent = new Intent(this, FirstActivity.class);
startActivity(intent);
finish();
}
/**
* 设置当前的小点的位置
*/
private void setCurDot(int positon) {
if (positon < 0 || positon > views.size() - 1 || currentIndex == positon) {
return;
}
points[positon].setEnabled(false);
points[currentIndex].setEnabled(true);
currentIndex = positon;
}
}
接下来是适配器
package com.dongzk.test;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
public class ViewPagerAdapter extends PagerAdapter {
private List<View> views;
public ViewPagerAdapter(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 container, int position, Object object) {
((ViewPager)container).removeView(views.get(position));
}
//初始化position位置的界面
@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(views.get(position), 0);
return views.get(position);
}
}
当引导页滑动到最后一页点击立即体验会跳转到相应界面
import android.app.Activity;
import android.os.Bundle;
public class FirstActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.person_activity);
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="24.0dip"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="true"
android:padding="15.0dip"
android:src="@drawable/point" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="true"
android:contentDescription="@string/strPoint"
android:padding="15.0dip"
android:src="@drawable/point" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="true"
android:contentDescription="@string/strPoint"
android:padding="15.0dip"
android:src="@drawable/point" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="true"
android:contentDescription="@string/strPoint"
android:padding="15.0dip"
android:src="@drawable/point" />
</LinearLayout>
</RelativeLayout>
可以直接使用
源码连接在这:http://download.csdn.net/detail/dong5488/9366897