关于ViewPager Activity的一个问题
2016-12-30 14:36
393 查看
我想在某一页面加入ViewPager左右切换activity页面切换
由于不知道怎么用 百度了一堆代码 找了个比较合适的 加入进去 发现代码是三个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); } }; }
相关文章推荐
- 关于ViewPager滑动广告栏所出的问题和布局分析,做一个结果。。。
- 关于ViewPager中子Activity生命周期 混乱的问题解决方案
- 关于Fragment中定义一个ListView,然后给这个ListView添加header(ViewPager)的问题
- 关于ViewPager中子Activity生命周期 混乱的问题解决方案
- 关于activity被重启后viewpager的数据不刷新的问题
- 一个关于FormView更新时值修改的问题
- 关于TabActivity+ViewFlipper组合使用出现的问题
- 一个关于MFMessageComposeViewController的ios7中的诡异问题 收件人视图黑色 和解决方式
- 【android】关于使用ViewPager和LayoutInflater的出现问题
- 如何使ViewPager和其它元素显示在一个Activity里面
- 关于ViewPager的懒加载问题
- 在Viewpager的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题.
- 关于自动滚动无限循环viewpager的问题
- 关于TableView中不止一个section的情况下首个cell的y轴不为0的会造成的问题和解决办法
- 关于viewpager配合fragment,菜单(optionmenu)的问题
- 关于Viewpager中的Fragment 滑动时保存状态的问题
- 一个关于MFMessageComposeViewController的ios7中的诡异问题 收件人视图黑色 和解决方式
- 最近遇到一个很蛋疼的问题 关于View的
- 关于ViewPager的数据更新问题小结
- 关于ViewPager加载多个导致OOM内存溢出的问题。