个性ViewPager

来源:互联网 发布:librtmp 源码 编辑:程序博客网 时间:2024/04/28 09:32

主布局

这里的clipChildren设置false,就是允许控件凸出来,不让布局自动剪裁

<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"    android:clipChildren="false"    android:id="@+id/rellay"    >        <android.support.v4.view.ViewPager            android:id="@+id/vp"            android:layout_width="match_parent"            android:layout_height="140dp"            android:clipChildren="false"            android:layout_marginLeft="60dp"            android:layout_marginRight="60dp"            android:layout_gravity="center"            /></RelativeLayout>

代码中

public class MainActivity extends AppCompatActivity {    private ViewPager vp;    private int[] imgids={R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5};    private RelativeLayout rellay;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        rellay = (RelativeLayout) findViewById(R.id.rellay);        vp = (ViewPager) findViewById(R.id.vp);        vp.setPageMargin(20);        vp.setOffscreenPageLimit(3);        vp.setAdapter(new PagerAdapter() {            @Override            public int getCount() {                return imgids.length;            }            @Override            public boolean isViewFromObject(View view, Object object) {                return view==object;            }            @Override            public Object instantiateItem(ViewGroup container, int position) {                ImageView imageView = new ImageView(MainActivity.this);                imageView.setImageResource(imgids[position]);                container.addView(imageView);                return imageView;            }            @Override            public void destroyItem(ViewGroup container, int position, Object object) {                container.removeView((View)object);            }        });        //当vp滑动的时候,要重绘布局        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                if (rellay != null) {                    rellay.invalidate();                }            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });        //将父类的touch事件分发至viewPgaer,否则只能滑动中间的一个view对象          rellay.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                return vp.dispatchTouchEvent(event);            }        });    }}
0 0