ViewPager的使用方法
首先是 导入jar包 下载地址:android-support-v4.jar
布局文件里添加viewPager布局
- <android.support.v4.view.ViewPager
- android:id="@+id/search_viewpager"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center" >
- </android.support.v4.view.ViewPager>
再创建两个item布局用于填充在ViewPager里
然后就是Activity了,主要写了左右滑动切换页面,还有一个小图片随页面切换 位移的动画效果
- public class SearchAllcityActivity extends Activity {
- private KeywordsFlow keywordsFlow;
- private ViewPager viewPager;
- private ImageView imageView;
- private List<View> lists = new ArrayList<View>();
- private ViewPagerAdapter adapter;
- private Bitmap cursor;
- private int offSet;
- private int currentItem;
- private Matrix matrix = new Matrix();
- private int bmWidth;
- private Animation animation;
- private Button shuaxin_sq, shuaxin_fl;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.search_allcity);
- // 随页面滑动图片
- imageView = (ImageView) findViewById(R.id.viewpaget_img);
- // 热门商圈和热门分类 页面添加到viewPager集合
- lists.add(getLayoutInflater().inflate(R.layout.search_hot_shangqu, null));
- lists.add(getLayoutInflater().inflate(R.layout.search_hot_fenlei, null));
- // 初始化滑动图片位置
- initeCursor();
- adapter = new ViewPagerAdapter(lists);
- viewPager = (ViewPager) findViewById(R.id.search_viewpager);
- viewPager.setAdapter(adapter);
- // ViewPager滑动监听器
- viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
- @Override
- public void onPageSelected(int arg0) {
- // TODO Auto-generated method stub
- // 当滑动时,顶部的imageView是通过animation缓慢的滑动
- switch (arg0) {
- case 0:
- if (currentItem == 1) {
- animation = new TranslateAnimation(offSet * 2 + bmWidth, 0, 0,0);
- } else if (currentItem == 2) {
- animation = new TranslateAnimation(offSet * 4 + 2 * bmWidth, 0,0, 0);
- }
- break;
- case 1:
- if (currentItem == 0) {
- animation = new TranslateAnimation(0, offSet * 2 + bmWidth, 0,0);
- } else if (currentItem == 2) {
- animation = new TranslateAnimation(4 * offSet + 2 * bmWidth,offSet * 2 + bmWidth, 0, 0);
- }
- break;
- }
- currentItem = arg0;
- animation.setDuration(500);
- animation.setFillAfter(true);
- imageView.startAnimation(animation);
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- // TODO Auto-generated method stub
- }
- });
- }
- /**
- * 计算滑动的图片的位置
- */
- private void initeCursor() {
- cursor = BitmapFactory.decodeResource(getResources(),R.drawable.viewpager_img);
- bmWidth = cursor.getWidth();
- DisplayMetrics dm;
- dm = getResources().getDisplayMetrics();
- offSet = (dm.widthPixels - 2 * bmWidth) / 4;
- matrix.setTranslate(offSet, 0);
- imageView.setImageMatrix(matrix); // 需要iamgeView的scaleType为matrix
- currentItem = 0;
- }
- }
最后,不能忘了ViewPager的Adapter
- public class ViewPagerAdapter extends PagerAdapter{
- List<View> viewLists;
- public ViewPagerAdapter(List<View> lists)
- {
- viewLists = lists;
- }
- @Override
- public int getCount() { //获得size
- // TODO Auto-generated method stub
- return viewLists.size();
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- // TODO Auto-generated method stub
- return arg0 == arg1;
- }
- @Override
- public void destroyItem(View view, int position, Object object) //销毁Item
- {
- ((ViewPager) view).removeView(viewLists.get(position));
- }
- @Override
- public Object instantiateItem(View view, int position) //实例化Item
- {
- ((ViewPager) view).addView(viewLists.get(position), 0);
- return viewLists.get(position);
- }
- }
ViewPager的使用方法的更多相关文章
- ViewPager的setOnPageChangeListener方法详解
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=548173 ViewPage使用时,最关键的代码就是setOnPageChang ...
- ViewPager的使用方法和实现过程
布局文件里添加viewPager布局 <android.support.v4.view.ViewPager android:id="@+id/search_viewpager" ...
- 【android】解决Viewpager设置高度为wrap_content无效的方法
今天发现设置viewpager高度为wrap_content时并没作用.stackoverflow给出了解决方式,就是自己定义viewpager,重写onMesure()方法: public clas ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- Android中使用ViewPager实现屏幕页面切换和页面切换效果
之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpag ...
- Android 引导页公共方法LeaderPager
SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 引导页是我们开发app很常用的功 ...
- android ViewPager使用遇到的问题
项目需求是需要实现一个有两页可滑动的界面,就想到了使用ViewPager,在实现是没有深入考虑,就直接使用了PagerAdapter,页面是正常实现了,可是发现无法流畅的刷新页面(直接使用notify ...
- ViewPager 的页面重置问题
当我们使用ViewPager控件时,假设我们的ViewPager有三页,当我们第一次启动ViewPager显示第一页的时候,ViewPager会预加载第二页,这样当我们向第二页滑动的时候就可以看见第二 ...
- Android Tab -- 使用ViewPager、Fragment、FragmentPagerAdapter来实现
原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换:点击标签切换. 代码:https://github.com/l ...
随机推荐
- 存储过程,游标,异常捕捉 try catch 实例代码
1.存储过程代码. (数据库是 AdventureWorks) 存储过程用来将错误信息插入到指定的表中. 在别的地方可以调用存储过程插入错误信息(下面部分代码 生成一个表,如果表已经存在就会插入错误 ...
- 图片文件和Bitmap之间的转换
图片文件转为Bitmap对象String filePath="c:/01.jpg"; Bitmap bitmap=BitmapFactory.decodeFile(filePat ...
- PHP文件管理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- php-fpm 和 mysql 之间的关系
我们都知道,php是不能直接操作 mysql的,他需要通过扩展提供接口调用,php的mysql扩展也好几个,只支持面向过程的mysql,既支持面向过程也支持面向对象的mysqli,只支持面向对象的PD ...
- $_validate 自动验证 字段是否重复
1.在控制器里面实例化 数据表的时候用D方法,不要用M方法 2.在当前Admin下的Model里面建立一个自定义的Model AdminsController.class.php ========== ...
- 【转】Java内存与垃圾回收调优
要了解Java垃圾收集机制,先理解JVM内存模式是非常重要的.今天我们将会了解JVM内存的各个部分.如何监控以及垃圾收集调优. Java(JVM)内存模型 正如你从上面的图片看到的,JVM内存被分成多 ...
- bzoj 3202 [Sdoi 2013] 项链 —— 置换+计数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3202 参考了博客: https://www.cnblogs.com/zhoushuyu/p/ ...
- CentOS7 yum安装mysql5.5/5.6并初始化
https://blog.csdn.net/petrel2015/article/details/78822466 下载MySQL yum仓库文件 首先根据官网给出的建议,下载MySQL的仓库文件 h ...
- 一行删除所有docker container的命令
ns=`docker | awk '//{print $1}'`;for n in $ns;do docker rm -f $n;done docker | awk '{print $1}'|xarg ...
- HDU5469(树的dfs)
Antonidas Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...