参考 http://www.jianshu.com/p/f8bf9e8b0a39

ViewPageAdapter

public class ViewPagerAdapter extends PagerAdapter {    private List data;    public ViewPagerAdapter(List 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 data;    List 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));    }}

效果

更多相关文章

  1. Android(安卓)模糊效果 FastBlur
  2. Android中隐藏状态栏和标题栏的方法
  3. android 4.0 处理状态栏
  4. LinearLayout 布局 底部固定导航
  5. android网变化广播接收
  6. Android自动升级框架
  7. android欢迎界面淡入淡出效果
  8. Android实现CoordinatorLayout、RecyclerView返回顶部效果
  9. Android(安卓)吸入动画效果详解(仿mac退出效果)

随机推荐

  1. RelativeLayout常用属性
  2. layout布局属性
  3. android 布局属性
  4. Android(安卓)设置图片倒影效果
  5. 居中对齐
  6. Android(安卓)Contextual Menus之二:conte
  7. 2010.12.10——— android 定位跟踪
  8. ?android:attr/属性 与 ?android:属性
  9. 【转】android manifest.xml中元素含义
  10. Android(安卓)ProgressBar进度条