package com.example.viewpagerdemo2;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity implements OnPageChangeListener{
private ViewPager viewPager;
private List<ImageView> list;
private LinearLayout layout;
private TextView tv;
private String[] strs;
private int privious;
private boolean isLoop=false;
private Handler handler=new Handler(){
public void handleMessage(Message msg) {
if(msg.what==0){
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化视图
initView();
//初始化数据
initDatas();
//初始化适配器,控制层
initAdapter();
//循环播放
loopPlay();
}
private void loopPlay() {
isLoop=true;
new Thread(){
public void run() {
try {
while(isLoop){
Thread.sleep(2000);
Message msg=Message.obtain();
msg.what=0;
handler.sendMessage(msg);
Log.d("PAGER", "viewPagernum"+viewPager.getCurrentItem());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
}
private void initView() {
viewPager = (ViewPager) findViewById(R.id.viewpager);
tv = (TextView) findViewById(R.id.tv);
}
private void initDatas() {
//初始化ViewPager需要的图片数组和TextView数据数据
int[] images=new int[]{R.drawable.num_one,R.drawable.num_two,R.drawable.num_three
,R.drawable.num_four,R.drawable.num_five};
strs = new String[]{"第一页","第二页","第三页","第四页","第五页"};
//把VipewPager中需要的图片用ImageView创建,然后添加到list集合中。
ImageView imageView;
list = new ArrayList<ImageView>();
for(int i=0;i<images.length;i++){
imageView=new ImageView(this);
imageView.setBackgroundResource(images[i]);
list.add(imageView);
//创建下标小白点,然后用LinearLayout作为父容器,把5个小白点加进去
View view=new View(this);
view.setBackgroundResource(R.drawable.shape_point_disable);
LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(5, 5);
if(i!=0){
lp.leftMargin=10;
}
layout = (LinearLayout) findViewById(R.id.layout_point);
layout.addView(view,lp);
}
}
private void initAdapter() {
//设置小白点的默认位置0是选中状态的白点。
layout.getChildAt(0).setBackgroundResource(R.drawable.shape_point_enable);
tv.setText("第一页");
viewPager.setAdapter(new MyPagerAdapter());
//设置监听
viewPager.setOnPageChangeListener(this);
//把当前位置放在一个可靠的位置,如果从0开始的话,一开始就不能向左滑动了
viewPager.setCurrentItem(1000000);
}
class MyPagerAdapter extends PagerAdapter{
//设置最大值,
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
//默认写法,判断是否复用。
@Override
public boolean isViewFromObject(View view, Object obj) {
// TODO Auto-generated method stub
return view==obj;
}
//初始化条目
//container:父容器
//position:当前位置
@Override
public Object instantiateItem(ViewGroup container, int position) {
int num=position%list.size();
ImageView imageView=list.get(num);
container.addView(imageView);
return imageView;
}
//销毁条目
//container:父容器
//object:代表当前的View对象,如果需要销毁的话,就调用父容器的removeView()方法销毁这个object对象。
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
//以下三个是ViewPager的onPageChangedListener监听需要实现的方法。
//这个方法是滑动状态改变时调用,当手指点击和松开屏幕的时候都会调用
@Override
public void onPageScrollStateChanged(int arg0) {
}
//滚动的时候调用,从开始滑动到结束滑动一直被多次调用,中间会夹杂着反弹动画期间也会被调用
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
//ViewPager翻页结束,页面稳定之后被调用
@Override
public void onPageSelected(int position) {
int num=position%list.size();
tv.setText(strs[num]);
layout.getChildAt(num).setBackgroundResource(R.drawable.shape_point_enable);
layout.getChildAt(privious).setBackgroundResource(R.drawable.shape_point_disable);
privious=num;
}
//之前死循环中的标识,别忘记在Activity销毁后跟着销毁,否则之前的死循环会一直循环下去。
@Override
protected void onDestroy() {
isLoop=false;
super.onDestroy();
}
}
ViewPager翻页,下标,循环播放
最新推荐文章于 2021-08-31 09:19:28 发布