效果图:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mhy.zidingyiview.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/mViewPager"
android:layout_width="match_parent"
android:layout_height="200dp">
</android.support.v4.view.ViewPager>
<TextView
android:id="@+id/title_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/mViewPager"
android:background="#33000000"
android:gravity="center"
android:text="你好。。。"
android:textColor="#91ec70"
android:textSize="28sp"
android:paddingBottom="30dp"/>
<LinearLayout
android:layout_alignBottom="@id/mViewPager"
android:id="@+id/point_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
</LinearLayout>
</RelativeLayout>
MainActivity.java
package com.example.mhy.zidingyiview;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.example.mhy.zidingyiview.adapter.MyViewPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager mViewPager;
private TextView mTitleTextView;
private LinearLayout mPointContainerView;
private List<ImageView> mImageViewList = new ArrayList<ImageView>();
private int[] imageViews = new int[] { R.mipmap.a, R.mipmap.b,
R.mipmap.c, R.mipmap.d, R.mipmap.e };
private String[] titleText = new String[] {"图片一", "图片二", "图片三",
"图片四", "图片五" };
private int current = Integer.MAX_VALUE / 2 - (Integer.MAX_VALUE / 2 % 5);
private MyViewPagerAdapter mAdapter;
private boolean flag = true;
private int count = 0;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
mViewPager.setCurrentItem(current);
current++;
if(flag) {
handler.sendEmptyMessageDelayed(1, 1000);
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = (ViewPager) findViewById(R.id.mViewPager);
mTitleTextView = (TextView) findViewById(R.id.title_textView);
mPointContainerView = (LinearLayout) findViewById(R.id.point_container);
for(int i=0; i<imageViews.length; i++) {
ImageView iv = new ImageView(getApplicationContext());
iv.setImageResource(imageViews[i]);
mImageViewList.add(iv);
//初始化点
ImageView point = new ImageView(getApplicationContext());
point.setImageResource(R.drawable.selector_point);
mPointContainerView.addView(point);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) point.getLayoutParams();
params.leftMargin = 10;
point.setLayoutParams(params);
//给点设置不同的状态
if(i == 0) {
point.setEnabled(true);
} else {
point.setEnabled(false);
}
}
//初始化
mTitleTextView.setText(titleText[0]);
mAdapter = new MyViewPagerAdapter(mImageViewList);
mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(current);
//handler 当定时任务
handler.sendEmptyMessageDelayed(1, 1000);
//监听ViewPager页面滚动的变化
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
// 页面滑动调用
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//切换到新的界面的时候
//position 新界面的位置
@Override
public void onPageSelected(int position) {
System.out.println("onPageSelected");
int index = position % 5;
mTitleTextView.setText(titleText[index]);
//修改点的状态
ImageView point = (ImageView) mPointContainerView.getChildAt(index);
point.setEnabled(true);
//修改之前点的状态
ImageView point_old = (ImageView) mPointContainerView.getChildAt(count);
point_old.setEnabled(false);
//修改之前的位置
count = index;
current = position;
}
// 滑动状态发生改变 静止 ->滑动
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
flag = false;
}
}
MyViewPagerAdapter.java
package com.example.mhy.zidingyiview.adapter;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.List;
/**
* Created by mhy on 2016/6/12.
*/
public class MyViewPagerAdapter extends PagerAdapter {
private List<ImageView> mList;
public MyViewPagerAdapter(List<ImageView> mList) {
this.mList = mList;
}
@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) {
container.addView(mList.get(position % 5));
return mList.get(position % 5);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mList.get(position % 5));
}
}