package com.example.demo;
/**
* 主要内容
* 】简单ViewPager
* 】加文本
* 】加小圆点
*/
import java.util.ArrayList;
import java.util.List;
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.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends Activity implements OnPageChangeListener{
private ViewPager vp;
private int imgArray[];
private MyAdapter adapter;
private TextView tvTitle;
private String titleArray[];
private LinearLayout layout;
private int prePosition=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
List<ImageView> l = new ArrayList<ImageView>();
tvTitle=(TextView)findViewById(R.id.tv_title);
layout=(LinearLayout)findViewById(R.id.layout);
imgArray=getImage();
titleArray=getText();
for(int i=0;i<imgArray.length;i++){
ImageView img=new ImageView(this);
img.setImageResource(imgArray[i]);
l.add(img);
/**先在布局中添加一个布局
* 添加小圆点,list中的数据有多少,就添加多少
*/
View v=new View(this);
v.setBackgroundResource(R.drawable.a);
LayoutParams params=new LayoutParams(20, 20);
v.setLayoutParams(params);
layout.addView(v);
}
adapter=new MyAdapter(l);
vp.setAdapter(adapter);
tvTitle.setText(titleArray[0]);
layout.getChildAt(0).setBackgroundResource(R.drawable.b);
vp.setOnPageChangeListener(this);
}
private String[] getText() {
String s[]={"鸣人","佐助","小樱"};
return s;
}
private int[] getImage() {
int imgArray[]={R.drawable.back,R.drawable.bird,R.drawable.logal};
return imgArray;
}
/***********************ViewPager事件的监听*********************************************/
/**
* 页面滚动状态发生改变是调用
* 】空闲
* 】触摸并滚动
* 】猛动
*/
@Override
public void onPageScrollStateChanged(int arg0) {
}
/**
* 页面滚动时
* 】arg0:条目所在位置
* 】arg1:view在屏幕上移动的百分比0-1,以像素为单位
* 】arg2:view实际移动的距离
*/
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
/**
* 页面选中时调用
* 】arg0:条目所在的位置
*/
@Override
public void onPageSelected(int arg0) {
/**
* 设置每个view的文本(标题)
* 】当页面发生变化,动态更新title
*/
tvTitle.setText(titleArray[arg0]);
/*******************设置小圆点************************************/
/**
* 】红点随着页面变化而变化,
* 】将当前页面圆点图片设置为红色的
* 】将上一个页面的原点图片设置为灰色的
* 】通过prePosition动态记录上一个页面位置,初始化为0,更换页面后,重置为当前页面,
*/
layout.getChildAt(arg0).setBackgroundResource(R.drawable.b);
layout.getChildAt(prePosition).setBackgroundResource(R.drawable.a);
prePosition=arg0;
}
}
package com.example.demo;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class MyAdapter extends PagerAdapter{
private List<ImageView> l;
public MyAdapter(List<ImageView> l) {
this.l=l;
}
@Override
public int getCount() {
return l.size();
}
/**
* arg0:当前显示的view
* arg1:从instantiateItem返回的object
* 如果view第一次展示,就返回false,会产生新的view
* 如果view不是第一次展示,就返回true,复用之前的
*/
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
/**
* 将子视图从容器container(就是ViewPager)中移除
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(l.get(position));
}
/**】container:ViewPager
* 】position:条目的位置
*
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(l.get(position));
return l.get(position);
}
}