ViewPageAdapter
public class ViewPagerAdapter extends PagerAdapter {
private List<Integer> data;
public ViewPagerAdapter(List<Integer> data) {
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(container.getContext());
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setBackgroundResource(data.get(position));
container.addView(imageView);
return imageView;
// return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
// super.destroyItem(container, position, object);
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.alex.viewpagerdemo.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="200dp"></android.support.v4.view.ViewPager>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="bottom"
android:background="#9977">
<TextView
android:id="@+id/banner_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="怎么了"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:paddingLeft="20dp"/>
<TextView
android:id="@+id/banner_indicator"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="1/4"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"/>
</RelativeLayout>
</FrameLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SortLayout"
android:textAllCaps="false"
android:onClick="sort"/>
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity {
ViewPager viewPager;
ViewPagerAdapter adapter;
List<Integer> data;
List<String> titleData;
int currentPage = 0;
boolean viewPagerScrollStatus = false; //标志位,当在手动翻页时,自动翻页暂停
TextView title, indicator;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (!viewPagerScrollStatus) {
viewPager.setCurrentItem(++currentPage);
}
handler.sendEmptyMessageDelayed(1, 1000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
title = (TextView) findViewById(R.id.banner_title);
indicator = (TextView) findViewById(R.id.banner_indicator);
data = new ArrayList<>(); titleData = new ArrayList<>();
data.add(R.mipmap.t); titleData.add("4.哦");
data.add(R.mipmap.a); titleData.add("1.怎么了");
data.add(R.mipmap.b); titleData.add("2.没事");
data.add(R.mipmap.c); titleData.add("3.那好吧");
data.add(R.mipmap.t); titleData.add("4.哦");
data.add(R.mipmap.a); titleData.add("1.怎么了");
adapter = new ViewPagerAdapter(data);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//头尾衔接,无限循环
if (position == data.size() - 1) {
currentPage = 1;
} else if (position == 0) {
currentPage = data.size() - 2;
} else {
currentPage = position;
}
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
viewPagerScrollStatus = false;
viewPager.setCurrentItem(currentPage, false);
title.setText(titleData.get(currentPage));
indicator.setText(currentPage + "/" + (titleData.size() - 2));
} else {
viewPagerScrollStatus = true;
}
}
});
handler.sendEmptyMessageDelayed(1, 1000);
viewPager.setPageTransformer(true, new ViewPager.PageTransformer() {
@Override
public void transformPage(View page, float position) {
int width = page.getWidth();
//我们给不同状态的页面设置不同的效果
//通过position的值来分辨页面所处于的状态
if (position < -1) {//滑出的页面
page.setScrollX((int) (width * 0.75 * -1));
} else if (position <= 1) {//[-1,1]
if (position < 0) {//[-1,0]
page.setScrollX((int) (width * 0.75 * position));
} else {//[0,1]
page.setScrollX((int) (width * 0.75 * position));
}
} else {//即将滑入的页面
page.setScrollX((int) (width * 0.75));
}
}
});
}
public void sort(View v) {
startActivity(new Intent(this, SortLayoutActivity.class));
}
}
效果