效果为:图片滑动,最后一个页面有按钮
guide.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/guidepager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
android:id="@+id/startBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/point_ll"
android:text="@string/start_app"
android:gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:textColor="#F0FFA500"
android:textSize="20sp"
android:src="@drawable/share_bt"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/point_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:layout_marginBottom="24dp"
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: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: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:padding="15.0dip"
android:src="@drawable/point"/>
</LinearLayout>
</RelativeLayout>
point.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_enabled="true" android:drawable="@drawable/point_normal" />
<item android:state_enabled="false" android:drawable="@drawable/point_select" />
</selector>
GuideActivity
import java.util.ArrayList;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class GuideActivity extends BaseActivity implements OnPageChangeListener {
/**定义一个ViewPager对象*/
@InjectView(id = R.id.guidepager)
private ViewPager guidePager;
/**存放点的线性布局*/
@InjectView(id = R.id.point_ll)
private LinearLayout pointLL;
/**定义一个ArrayList存放View*/
private ArrayList<View> views;
/**定义ViewPager适配器*/
private GuideAdapter guideAdapter;
/**引导界面图片*/
private static final int[] pics = {R.drawable.guide_1,
R.drawable.guide_2,
R.drawable.guide_3,
R.drawable.guide_4};
/**底部小点的图片*/
private ImageView[] points;
/**当前图片的位置*/
private int currentIndex;
/**跳转按钮*/
@InjectView(id = R.id.startBtn)
private Button startBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.guide);
initView();
initData();
}
/**
* 初始化数据
*/
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.setImageResource(pics[i]);
views.add(iv);
}
//设置数据
guidePager.setAdapter(guideAdapter);
//设置监听
guidePager.setOnPageChangeListener(this);
startBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startToLogo();
}
});
//初始化底部小点
initPoint();
}
/**
* 跳转到LogoActivity界面
*/
private void startToLogo() {
Intent intent = new Intent(GuideActivity.this, LoginActivity.class);
startActivity(intent);
GuideActivity.this.finish();
}
/**
* 初始化底部小点
*/
private void initPoint(){
points = new ImageView[pics.length];
//循环取得小点图片
for (int i = 0; i < pics.length; i++) {
//得到一个LinearLayout下面的每一个子元素
points[i] = (ImageView) pointLL.getChildAt(i);
//默认都设为灰色
points[i].setEnabled(true);
//给每个小点设置监听
points[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer)v.getTag();
setCurView(position);
setCurPos(position);
}
});
//设置位置tag,方便取出与当前位置对应
points[i].setTag(i);
}
//设置当面默认的位置
currentIndex = 0;
//设置为白色,即选中状态
points[currentIndex].setEnabled(false);
}
/**
* 初始化组件
* */
private void initView() {
views = new ArrayList<View>();
guideAdapter = new GuideAdapter(views);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
/**
* 当新的页面被选中时调用
*/
@Override
public void onPageSelected(int position) {
setCurPos(position);
}
/**
* 设置当前小点的位置及点中状态
*/
private void setCurPos(int position) {
if (position < 0 || position > pics.length - 1 || currentIndex == position) {
return;
}
points[position].setEnabled(false);
points[currentIndex].setEnabled(true);
currentIndex = position;
//如果是最后一个页面
if (position == (pics.length - 1)) {
startBtn.setVisibility(View.VISIBLE);
}
}
/**
* 设置当前页面
*/
private void setCurView(int position) {
if (position < 0 || position >= pics.length) {
return;
}
guidePager.setCurrentItem(position);
}
}
package com.wri.hongyi.soft.ui.adapter;
import java.util.ArrayList;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
public class GuideAdapter extends PagerAdapter {
//界面列表
private ArrayList<View> views;
public GuideAdapter (ArrayList<View> views) {
this.views = views;
}
/**
* 获得当前界面数
* */
@Override
public int getCount() {
return views.size();
}
/**
* 判断是否由对象生成界面
* */
@Override
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
/**
* 销毁position位置的界面
* */
@Override
public void destroyItem(View view, int position, Object obj) {
((ViewPager) view).removeView(views.get(position));
}
/**
* 初始化position位置的界面
* */
@Override
public Object instantiateItem(View view, int position) {
((ViewPager) view).addView(views.get(position));
return views.get(position);
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {
}
}