zoukankan      html  css  js  c++  java
  • ViewPager单页显示3个item

    原文地址:https://github.com/hongyangAndroid/MagicViewPager/wiki

    MagicViewPager

    单页显示3个Item的ViewPager炫酷切换效果,适用于Banner等。

    效果图

    • Rotate Y

    • Rotate Down

    • Rotate Up

    • Alpha

    • ScaleIn

    • ScaleIn + Alpha + Rotate Down

    使用

    ###(1)引入

    compile `com.zhy:magic-viewpager:1.0.1`
    

    ###(2)示例

    • 布局文件
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:clipChildren="false"
        android:layout_centerInParent="true"
        android:background="#aadc71ff"
        >
        <android.support.v4.view.ViewPager
            android:id="@+id/id_viewpager"
            android:layout_width="match_parent"
            android:layout_marginLeft="60dp"
            android:clipChildren="false"
            android:layout_marginRight="60dp"
            android:layout_height="120dp"
            android:layout_gravity="center"
            >
        </android.support.v4.view.ViewPager>
    </FrameLayout>

    注意外层android:layout_centerInParent="true".(貌似其实没什么影响

    • 编码
    mViewPager.setPageMargin(20);//设置page间间距,自行根据需求设置
    mViewPager.setOffscreenPageLimit(3);//>=3
    mViewPager.setAdapter...//写法不变
    
    //setPageTransformer 决定动画效果
    mViewPager.setPageTransformer(true, new RotateDownPageTransformer());

    ##目前可选动画

    • AlphaPageTransformer
    • RotateDownPageTransformer
    • RotateUpPageTransformer
    • RotateYTransformer
    • NonPageTransformer
    • ScaleInTransformer

    动画间可以自由组合,例如:

    mViewPager.setPageTransformer(true,new RotateDownPageTransformer(new AlphaPageTransformer(new ScaleInTransformer())));

    需求:

    1.一个页面显示三个item

    2.viewpager无限循环

    3.定时滑动

    4.长条形小点

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#aadc71ff"
        android:clipChildren="false"
        tools:context="com.example.administrator.banner2.MainActivity">
    
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:layout_marginTop="10dp"
            android:clipChildren="false"></android.support.v4.view.ViewPager>
    
        <LinearLayout
            android:id="@+id/dotLayout"
            android:layout_width="match_parent"
            android:layout_height="10dp"
            android:layout_gravity="bottom"
            android:layout_marginBottom="10dp"
            android:gravity="center"
            android:orientation="horizontal"></LinearLayout>
    
    </FrameLayout>
    import android.os.Bundle;
    import android.os.Handler;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.RelativeLayout;
    
    import com.zhy.magicviewpager.transformer.ScaleInTransformer;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MainActivity extends AppCompatActivity {
    
        private ViewPager mViewPager;
        private PagerAdapter mAdapter;
        private LinearLayout dotLayout;
        private Timer timer;
        private Handler mHandler = new Handler();
    
        private int prePosition = 0;
    
        int[] imgRes = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d,
                R.drawable.e, R.drawable.f, R.drawable.g, R.drawable.h, R.drawable.i};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mViewPager = (ViewPager) findViewById(R.id.viewpager);
            dotLayout = (LinearLayout) findViewById(R.id.dotLayout);
    
            initDots();
    
            mViewPager.setPageMargin(20);
            mViewPager.setOffscreenPageLimit(3);
            mViewPager.setAdapter(mAdapter = new PagerAdapter() {
                @Override
                public Object instantiateItem(ViewGroup container, int position) {
                    ImageView view = new ImageView(MainActivity.this);
                    view.setScaleType(ImageView.ScaleType.FIT_XY);
                    view.setImageResource(imgRes[position % imgRes.length]);
                    container.addView(view);
                    return view;
                }
    
                @Override
                public void destroyItem(ViewGroup container, int position, Object object) {
                    container.removeView((View) object);
                }
    
                @Override
                public int getCount() {
                    return Integer.MAX_VALUE;
                }
    
                @Override
                public boolean isViewFromObject(View view, Object o) {
                    return view == o;
                }
            });
            mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
                }
    
                @Override
                public void onPageSelected(int position) {
                    dotLayout.getChildAt(prePosition).setEnabled(false);
                    dotLayout.getChildAt(position % imgRes.length).setEnabled(true);
                    prePosition = position % imgRes.length;
                }
    
                @Override
                public void onPageScrollStateChanged(int state) {
    
                }
            });
            mViewPager.setPageTransformer(true, new ScaleInTransformer());
            if (null != timer) {
                timer.cancel();
            }
            timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
                        }
                    });
                }
            }, 0, 1000);
    
        }
    
        private void initDots() {
            if (null != dotLayout) {
                dotLayout.removeAllViews();
            }
            for (int i = 0; i < imgRes.length; i++) {
                ImageView dot = new ImageView(this);
                dot.setEnabled(false);
                dot.setImageResource(R.drawable.dot);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                params.leftMargin = 10;
                dot.setLayoutParams(params);
                dotLayout.addView(dot);
            }
            dotLayout.getChildAt(0).setEnabled(true);
        }
    }
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_enabled="true">
            <shape android:shape="rectangle">
                <size android:width="15dp" android:height="3dp"></size>
                <corners android:radius="10dp" />
                <solid android:color="#ff0000" />
            </shape>
        </item>
        <item android:state_enabled="false">
            <shape android:shape="rectangle">
                <size android:width="15dp" android:height="3dp"></size>
                <corners android:radius="10dp" />
                <solid android:color="#ffffff" />
            </shape>
        </item>
    </selector>

     

  • 相关阅读:
    spring-base.xml
    计算和证明施密特正交,写的很清楚
    推理
    存在某种关系时,推理存在新关系
    PyCharm 技巧
    3#记录
    2#记录
    一文揭秘!自底向上构建知识图谱全过程
    1#记录
    本体建模小结
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/6801778.html
Copyright © 2011-2022 走看看