您的位置:首页 > 其它

关于ViewPager Activity的一个问题

2016-12-30 14:36 393 查看
我想在某一页面加入ViewPager左右切换activity页面切换

由于不知道怎么用  百度了一堆代码  找了个比较合适的 加入进去 发现代码是三个activity的切换  但我加入第四个页面切换的时候就出错了  这是为什么?

请教各位大牛
@SuppressWarnings("deprecation")

public class MovingActivity extends Activity {

Context context = null;

    LocalActivityManager manager = null;

    ViewPager pager = null;

    TabHost tabHost = null;

  //  TextView t1,t2,t3;

    

    private int offset = 0;// 动画图片偏移量

    private int currIndex = 0;// 当前页卡编号

    private int bmpW;// 动画图片宽度

    private ImageView cursor;// 动画图片

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.moving);

        context = MovingActivity.this;

        manager = new LocalActivityManager(this , true);

        manager.dispatchCreate(savedInstanceState);

        InitImageView();

       // initTextView();

        initPagerViewer();

    }

    /**

     * 初始化标题

     */

  /*  private void initTextView() {

        t1 = (TextView) findViewById(R.id.text1);

        t2 = (TextView) findViewById(R.id.text2);

        t3 = (TextView) findViewById(R.id.text3);

        

        t1.setOnClickListener(new MyOnClickListener(0));

        t2.setOnClickListener(new MyOnClickListener(1));

        t3.setOnClickListener(new MyOnClickListener(2));

        

    }*/

    /**

     * 初始化PageViewer

     */

    private void initPagerViewer() {

        pager = (ViewPager) findViewById(R.id.viewpage);

        final ArrayList<View> list = new ArrayList<View>();

        Intent intent = new Intent(context, SetUp1Activity.class);

        list.add(getView("A", intent));

        Intent intent2 = new Intent(context, SetUp2Activity.class);

        list.add(getView("B", intent2));

        Intent intent3 = new Intent(context, SetUp3Activity.class);

        list.add(getView("C", intent3));

        Intent intent4 = new Intent(context, SetUp4Activity.class);

        list.add(getView("D", intent4));

        

        pager.setAdapter(new MyPagerAdapter(list));

        pager.setCurrentItem(0);

        pager.setOnPageChangeListener(new MyOnPageChangeListener());

    }

    /**

     * 初始化动画

     *

     */

    private void InitImageView() {

        cursor = (ImageView) findViewById(R.id.cursor);

        bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.bg_selected)

        .getWidth();// 获取图片宽度*/

        DisplayMetrics dm = new DisplayMetrics();

        getWindowManager().getDefaultDisplay().getMetrics(dm);

        int screenW = dm.widthPixels;// 获取分辨率宽度

        offset = (screenW / 4 - bmpW) / 3;// 计算偏移量

        Matrix matrix = new Matrix();

        matrix.postTranslate(offset, 0);

        cursor.setImageMatrix(matrix);// 设置动画初始位置

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

    /**

     * 通过activity获取视图

     * @param id

     * @param intent

     * @return

     */

    private View getView(String id, Intent intent) {

        return manager.startActivity(id, intent).getDecorView();

    }

    /**

     * Pager适配器

     */

    public class MyPagerAdapter extends PagerAdapter{

        List<View> list =  new ArrayList<View>();

        public MyPagerAdapter(ArrayList<View> list) {

            this.list = list;

        }

        @Override

        public void destroyItem(ViewGroup container, int position,

                Object object) {

            ViewPager pViewPager = ((ViewPager) container);

            pViewPager.removeView(list.get(position));

        }

        @Override

        public boolean isViewFromObject(View arg0, Object arg1) {

            return arg0 == arg1;

        }

        @Override

        public int getCount() {

            return list.size();

        }

        @Override

        public Object instantiateItem(View arg0, int arg1) {

            ViewPager pViewPager = ((ViewPager) arg0);

            pViewPager.addView(list.get(arg1));

            return list.get(arg1);

        }

        @Override

        public void restoreState(Parcelable arg0, ClassLoader arg1) {

        }

        @Override

        public Parcelable saveState() {

            return null;

        }

        @Override

        public void startUpdate(View arg0) {

        }

    }

    /**

     * 页卡切换监听

     */

    public class MyOnPageChangeListener implements OnPageChangeListener {

        int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量

        int two = one * 2;// 页卡1 -> 页卡3 偏移量

        int three=one * 3;

        

        public void onPageSelected(int arg0) {

            Animation animation = null;

            switch (arg0) {

            case 0:

                if (currIndex == 1) {

                    animation = new TranslateAnimation(one, 0, 0, 0);

                } else if (currIndex == 2) {

                    animation = new TranslateAnimation(three, 0, 0, 0);

                }

                break;

            case 1:

                if (currIndex == 0) {

                    animation = new TranslateAnimation(offset, one, 0, 0);

                } else if (currIndex == 2) {

                    animation = new TranslateAnimation(two, one, 0, 0);    

                }

                break;

            case 2:

                if (currIndex == 0) {

                    animation = new TranslateAnimation(offset, two, 0, 0);

                } else if (currIndex == 1) {

                    animation = new TranslateAnimation(one, two, 0, 0);

                }

                break;

            case 3:

                if (currIndex == 0) {

                    animation = new TranslateAnimation(offset, three, 0, 0);

                } else if (currIndex == 1) {

                    animation = new TranslateAnimation(one, three, 0, 0);

                }

                break;

            }

        	//Animation animation = new TranslateAnimation(one*currIndex, one*arg0, 0, 0);

            currIndex = arg0;

            animation.setFillAfter(true);// True:图片停在动画结束位置

            animation.setDuration(300);

            cursor.startAnimation(animation);

        }

        public void onPageScrollStateChanged(int arg0) {

            

        }

        public void onPageScrolled(int arg0, float arg1, int arg2) {

            

        }

    }

    /**

     * 头标点击监听

     */

    public class MyOnClickListener implements View.OnClickListener {

        private int index = 0;

        public MyOnClickListener(int i) {

            index = i;

        }

        public void onClick(View v) {

            pager.setCurrentItem(index);

        }

    };

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: