package com.example.viewpager;
import java.util.ArrayList;
import com.example.fragment2.R;
import android.app.Activity;
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.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class ViewpagerActivity extends Activity implements OnClickListener, OnPageChangeListener {
//定义ViewPager对象
private ViewPager viewPager;
//定义ViewPager适配器
private ViewPagerAdapter vpAdapter;
//定义一个ArrayList来存放View
private ArrayList<View> views;
//引导图片资源
private static final int[] pics={R.drawable.guide1,R.drawable.guide2,R.drawable.guide3,R.drawable.guide4};
//底部小点的图片
private ImageView[] points;
//记录当前选中位置
private int currentIndex;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.viewpagerlayout);
initView();
initData();
}
/**
* 初始化组件
*/
private void initView()
{
//实例化ArrayList对象
views=new ArrayList<View>();
//实例化ViewPager
viewPager=(ViewPager)findViewById(R.id.viewpager);
//实例化ViewPager适配器
vpAdapter=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);
//在最后一张引导页中加入button按钮方便进入主界面
if(i==pics.length-1)
{
RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
Button button=new Button(this);
button.setText("立即体验");
button.setTextSize(24);
params=(RelativeLayout.LayoutParams)button.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
button.setLayoutParams(params); //使layout更新
iv.setLayoutParams(params);
iv.setImageResource(pics[i]);
}else{
iv.setLayoutParams(mParams);
iv.setImageResource(pics[i]);
}
views.add(iv);
}
//设置数据
viewPager.setAdapter(vpAdapter);
//设置监听
viewPager.setOnPageChangeListener(this);
//初始化底部小点
initPoint();
}
/**
* 初始化底部小点
*/
private void initPoint()
{
LinearLayout linearLayout=(LinearLayout)findViewById(R.id.pointlayout);
points=new ImageView[pics.length];
//循环获得小点图片
for(int i=0;i<pics.length;i++)
{
//得到一个LinearLayout下面的每一个子元素
points[i]=(ImageView)linearLayout.getChildAt(i);
//默认都为灰色
points[i].setEnabled(true);
//给每个小点设置监听
points[i].setOnClickListener(this);
//设置位置tag,方便取出与当前位置对应
points[i].setTag(i);
}
//设置当前默认的位置
currentIndex=0;
}
/**
* 当滑动状态改变时调用
*
*/
@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 arg0) {
// TODO Auto-generated method stub
//设置底部小点选中状态
setCurDot(arg0);
}
/**
* 设置当前页面的位置
*/
private void setCurView(int position)
{
if(position<0||position>=pics.length)
{
return;
}
viewPager.setCurrentItem(position);
}
/**
* 设置当前的小点的位置
*/
private void setCurDot(int position)
{
if(position<0||position>pics.length-1||currentIndex==position)
{
return;
}
points[position].setEnabled(false);
points[currentIndex].setEnabled(true);
currentIndex=position;
}
/**
* 通过点击事件来切换当前的页面
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position =(Integer)v.getTag();
setCurView(position);
setCurDot(position);
}
}