ViewPager多页面滑动切换以及动画效果
来源:互联网 发布:青岛知豆租赁 怎么样 编辑:程序博客网 时间:2024/05/17 07:32
转载自:http://www.eoeandroid.com/code/2012/0322/994.html
转载自:http://www.eoeandroid.com/code/2012/0322/994.html
一、首先,我们来看一下效果图,这是新浪微博的Tab滑动效果。我们可以手势滑动,也可以点击上面的头标进行切换。与此同方式,白色横条会移动到相应的页卡头标下。这是一个动画效果,白条是缓慢滑动过去的。好了,接下来我们就来实现它。
二、在开始前,我们先要认识一个控件,ViewPager。它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换。这个附加包是android-support-v4。jar,在最后的源码中会提供给大家,在libs文件夹中。当然你也可以自己从网上搜索最新的版本。找到它后,我们需要在项目中添加
三、我们先做界面,
界面设计很简单,第一行三个头标,第二行动画图片,第三行页卡内容展示。
我们要展示三个页卡,所以还需要三个页卡内容的界面设计,这里我们只设置了背景颜色,能起到区别作用即可。
四、代码部分要进行初始化的工作 (1) 先来变量的定义
(2) 初始化头标
/** * ViewPager适配器 */ public class MyPagerAdapter extends PagerAdapter { public List<View> mListViews; public MyPagerAdapter(List<View> mListViews) { this.mListViews = mListViews; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView(mListViews.get(arg1)); } @Override public void finishUpdate(View arg0) { } @Override public int getCount() { return mListViews.size(); } @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mListViews.get(arg1), 0); return mListViews.get(arg1); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } }
这里我们实现了各页卡的装入和卸载 (4) 初始化动画
/** * 初始化动画 */ private void InitImageView() { cursor = (ImageView) findViewById(R.id.cursor); bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a) .getWidth();// 获取图片宽度 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenW = dm.widthPixels;// 获取分辨率宽度 offset = (screenW / 3 - bmpW) / 2;// 计算偏移量 Matrix matrix = new Matrix(); matrix.postTranslate(offset, 0); cursor.setImageMatrix(matrix);// 设置动画初始位置 }
根据屏幕的分辨率和图片的宽度计算动画移动的偏移量 /** * 页卡切换监听*/ public class MyOnPageChangeListener implements OnPageChangeListener { int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量int two = one * 2;// 页卡1 -> 页卡3 偏移量@Override 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(two, 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;} currIndex = arg0;animation.setFillAfter(true);// True:图片停在动画结束位置animation.setDuration(300);cursor.startAnimation(animation);} @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { }}
相信大家看后都没什么问题,点击第几个,就展示第几个页卡内容
- [Android实例] ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果
- [Android实例] ViewPager多页面滑动切换以及动画效果
- Android ViewPager多页面滑动切换以及动画效果
- Android ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果
- Android ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果
- [Android实例] ViewPager多页面滑动切换以及动画效果
- ViewPager多页面滑动切换以及动画效果(转)
- ViewPager多页面滑动切换以及动画效果(转)
- Android ViewPager多页面滑动切换以及动画效果
- Android ViewPager多页面滑动切换以及动画效果
- Android ViewPager多页面滑动切换以及动画效果
- Android ViewPager多页面滑动切换以及动画效果
- winrar制作安装文件
- 每日一练
- linux随笔 centos 6.2 出现repair filessystem 问题解决方式
- ASP.NET 错误: 您的主机中的软件中止了一个已建立的连接
- WPF ControlTemplate 仿QQ概念版CheckBox
- ViewPager多页面滑动切换以及动画效果
- 10 个基于 JavaScript 的图表插件推荐
- 给金额添加千位分隔符,号
- eclipse 主题分享
- Gson简要使用笔记
- svn使用~
- 股票常识
- Flex本地导入导出 很简单
- 深圳好的IT公司