android----------用ViewPage实现滑动效果

来源:互联网 发布:淘宝交易指数是什么 编辑:程序博客网 时间:2024/05/21 08:50

一、效果图

先上实现效果:

实现滑动效果主要用到的类是:android.support.v4.view.ViewPager

二、代码实现

布局代码

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent" android:layout_height="match_parent">    <android.support.v4.view.ViewPager        android:id="@+id/welcome_viewpager"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center" /></RelativeLayout>

主要代码(从项目中扣出来)

public class WelcomeActivity extends BasicActivity{    @ViewInject(id = R.id.welcome_viewpager)    private ViewPager wel_viewPager;    private PagerAdapter pagerAdapter;    private ArrayList<View> viewlist;    private Preference preference;    //三张图片    private int[] pic_ids = { R.mipmap.welcome_v1, R.mipmap.welcome_v2,            R.mipmap.welcome_v3 };    // 位移量    private int offset;    // 记录当前的位置    private int curpos = 0;    // 记录滑动手势的按下和抬起的位置,用于判断最后一页是否左滑从而进入主页面    private float lastx = 0, curx = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_welcome);        // 判断首次使用        preference = Preference.instance(this);        initviewpage();        handler.postDelayed(runnable, 2000);    }    private void initviewpage() {        viewlist = new ArrayList<View>();        for (int i = 0; i < pic_ids.length; i++) {            ImageView iv = new ImageView(this);            iv.setImageResource(pic_ids[i]);            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(                    ViewGroup.LayoutParams.MATCH_PARENT,                    ViewGroup.LayoutParams.MATCH_PARENT);            iv.setLayoutParams(params);            iv.setScaleType(ImageView.ScaleType.CENTER_CROP);// 图片按等比缩放            viewlist.add(iv);        }        // 设置wel_viewPager的Adapter        initAdapter();    }    private void initAdapter() {        pagerAdapter=new PagerAdapter() {            @Override            public int getCount() {                return viewlist.size();            }            @Override            public boolean isViewFromObject(View view, Object o) {                return view==o;// 官方提示这样写            }            @Override            public int getItemPosition(Object object) {                return super.getItemPosition(object);            }            @Override            public void destroyItem(ViewGroup container, int position, Object object) {                container.removeView(viewlist.get(position));            }            @Override            public Object instantiateItem(ViewGroup container, int position) {                container.addView(viewlist.get(position));                return viewlist.get(position);            }        };        wel_viewPager.setAdapter(pagerAdapter);        /**         * 在最后一页 判断左滑还是右滑         */        wel_viewPager.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if ((curpos == viewlist.size() - 1)) {// 是否是最后一页                    switch (event.getAction()) {                        case MotionEvent.ACTION_DOWN:                            lastx = event.getX();                            break;                        case MotionEvent.ACTION_MOVE:                            curx = event.getX();                            if (lastx - curx > 100) {                                skipActivity();                            }                            break;                    }                }                return false;            }        });        wel_viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageSelected(int arg0) {                // // 转移到下一个view时 原点移动到下一个位置                // if (arg0 < viewlist.size()) {                // moveCurdot(arg0);                // }                curpos = arg0;            }            @Override            public void onPageScrolled(int arg0, float arg1, int arg2) {            }            @Override            public void onPageScrollStateChanged(int arg0) {            }        });    }    private Handler handler = new Handler();    private boolean isEnd = false;    private Runnable runnable = new Runnable() {        @Override        public void run() {            if (!isEnd) {                if (curpos < 2) {                    handler.postDelayed(this, 2000);                    curpos++;                    wel_viewPager.setCurrentItem(curpos);                } else {                    skipActivity();                    isEnd = true;                }            }        }    };    /**     * 跳转到指定Activity     */    private void skipActivity() {        startActivity(null, MainActivity.class);        preference.putBoolean(Preference.FIRST_IN, true);        finishSimple();    }}


0 0
原创粉丝点击