1.自动轮播的View布局
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="140dp"
>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/lld"
android:layout_width="match_parent"
android:layout_height="20dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:gravity="center"
>
</LinearLayout>
</RelativeLayout>
2.设置适配器完了 调用Timer倒计时方法
//初始化viewpage LinearLayout
private ViewPager vp;
private LinearLayout ll;
private List<ImageView> listIv=new ArrayList<>();
private int curr;
private List<Integer> list;
private Timer timer;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int currentItem = vp.getCurrentItem();
currentItem++;
vp.setCurrentItem(currentItem);
}
};
//往集合里面 添加数据
private void addData() {
list = new ArrayList<>();
list.add(R.mipmap.ic_launcher);
list.add(R.mipmap.ic_launcher);
list.add(R.mipmap.ic_launcher);
list.add(R.mipmap.ic_launcher);
}
//倒计时方法
/**
* 倒计时 方法
*/
private void initTimer() {
timer = new Timer();
TimerTask task=new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(0);
}
};
timer.schedule(task,2000,2000);
}
/**
* 加点
*/
private void jiadian() {
for (int i = 0; i < list.size(); i++) {
ImageView iv=new ImageView(getActivity());
if(i==0){
iv.setImageResource(R.drawable.select);
}else {
iv.setImageResource(R.drawable.nomore);
}
//ll.removeAllViews();
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(15,15);
params.setMargins(5,0,5,0);
ll.addView(iv,params);
listIv.add(iv);
}
}
/**
* viewPage设置
*/
private void viewPage() {
//设置适配器
vp.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView iv=new ImageView(getActivity());
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setImageResource(list.get(position%list.size()));
container.addView(iv);
return iv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
});
}
/**
* 添加 自动轮播的 所有布局 以及 加点 等操作
*/
private void tianjiaView() {
jiadian(); //加点
viewPage();//ViewPage 适配器
vp.setCurrentItem(10000);
curr=vp.getCurrentItem();
//设置监听
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//轮播滑动监听
for (int i = 0; i <listIv.size() ; i++) {
if(position%list.size()==i){//判断选中当前
listIv.get(i).setImageResource(R.drawable.select);
}else {
listIv.get(i).setImageResource(R.drawable.nomore);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
//最后关闭线程
@Override
public void onDestroy() {
super.onDestroy();
timer.cancel();
}
//这个是加载到ListView 头部 , 在哪个布局 findViewByid
View hand=View.inflate(getActivity(),R.layout.viewpge,null);
vp= hand. findViewById(R.id.vp);
ll= hand. findViewById(R.id.lld);
//添加布局
tianjiaView();
ada.addHeaderView(hand);
//倒计时
initTimer();
//先走添加布局的方法 tianjiaView() -> 设置适配器 加载完数据 页面展示出来 ->调用倒计时方法