ViewPager的使用方法和实现过程

看图先:

        

页面中填充内容是随机关键词飞入和飞出动画效果,随后会更新,现在请先无视吧

 

首先是 导入jar包   下载地址: android-support-v4.jar

 

 

布局文件里添加viewPager布局

 

[html] view plaincopyprint?
  1. <android.support.v4.view.ViewPager  
  2.     android:id="@+id/search_viewpager"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     android:layout_gravity="center" >  
  6. </android.support.v4.view.ViewPager>  

再创建两个item布局用于填充在ViewPager里

 

然后就是Activity了,主要写了左右滑动切换页面,还有一个小图片随页面切换 位移的动画效果

 

[java] view plaincopyprint?
  1. public class SearchAllcityActivity extends Activity {  
  2.   
  3.     private KeywordsFlow keywordsFlow;  
  4.     private ViewPager viewPager;  
  5.     private ImageView imageView;  
  6.     private List<View> lists = new ArrayList<View>();  
  7.     private ViewPagerAdapter adapter;  
  8.     private Bitmap cursor;  
  9.     private int offSet;  
  10.     private int currentItem;  
  11.     private Matrix matrix = new Matrix();  
  12.     private int bmWidth;  
  13.     private Animation animation;  
  14.     private Button shuaxin_sq, shuaxin_fl;  
  15.   
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.search_allcity);  
  19.   
  20.         // 随页面滑动图片   
  21.         imageView = (ImageView) findViewById(R.id.viewpaget_img);  
  22.         // 热门商圈和热门分类 页面添加到viewPager集合   
  23.         lists.add(getLayoutInflater().inflate(R.layout.search_hot_shangqu, null));  
  24.         lists.add(getLayoutInflater().inflate(R.layout.search_hot_fenlei, null));  
  25.         // 初始化滑动图片位置   
  26.         initeCursor();  
  27.         adapter = new ViewPagerAdapter(lists);  
  28.         viewPager = (ViewPager) findViewById(R.id.search_viewpager);  
  29.         viewPager.setAdapter(adapter);  
  30.         // ViewPager滑动监听器   
  31.         viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {  
  32.               
  33.             @Override  
  34.             public void onPageSelected(int arg0) {  
  35.                 // TODO Auto-generated method stub   
  36.                 // 当滑动时,顶部的imageView是通过animation缓慢的滑动   
  37.                 switch (arg0) {  
  38.                 case 0:  
  39.                     if (currentItem == 1) {  
  40.                         animation = new TranslateAnimation(offSet * 2 + bmWidth, 00,0);  
  41.                     } else if (currentItem == 2) {  
  42.                         animation = new TranslateAnimation(offSet * 4 + 2 * bmWidth, 0,00);  
  43.                     }  
  44.                       
  45.                     break;  
  46.                 case 1:  
  47.                     if (currentItem == 0) {  
  48.                         animation = new TranslateAnimation(0, offSet * 2 + bmWidth, 0,0);  
  49.                     } else if (currentItem == 2) {  
  50.                         animation = new TranslateAnimation(4 * offSet + 2 * bmWidth,offSet * 2 + bmWidth, 00);  
  51.                     }  
  52.                       
  53.                       
  54.                     break;  
  55.                 }  
  56.                 currentItem = arg0;  
  57.                 animation.setDuration(500);  
  58.                 animation.setFillAfter(true);  
  59.                 imageView.startAnimation(animation);  
  60.   
  61.             }  
  62.               
  63.             @Override  
  64.             public void onPageScrolled(int arg0, float arg1, int arg2) {  
  65.                 // TODO Auto-generated method stub   
  66.                   
  67.             }  
  68.               
  69.             @Override  
  70.             public void onPageScrollStateChanged(int arg0) {  
  71.                 // TODO Auto-generated method stub   
  72.                   
  73.             }  
  74.         });  
  75.           
  76.     }  
  77.   
  78.       
  79.     /** 
  80.      * 计算滑动的图片的位置 
  81.      */  
  82.     private void initeCursor() {  
  83.         cursor = BitmapFactory.decodeResource(getResources(),R.drawable.viewpager_img);  
  84.         bmWidth = cursor.getWidth();  
  85.         DisplayMetrics dm;  
  86.         dm = getResources().getDisplayMetrics();  
  87.         offSet = (dm.widthPixels - 2 * bmWidth) / 4;  
  88.         matrix.setTranslate(offSet, 0);  
  89.         imageView.setImageMatrix(matrix); // 需要iamgeView的scaleType为matrix   
  90.         currentItem = 0;  
  91.     }  
  92.   
  93. }  
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() {@Overridepublic 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);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic 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为matrixcurrentItem = 0;}}

 

最后,不能忘了ViewPager的Adapter

 

 

[java] view plaincopyprint?
  1. public class ViewPagerAdapter extends PagerAdapter{  
  2.   
  3.     List<View> viewLists;  
  4.       
  5.     public ViewPagerAdapter(List<View> lists)  
  6.     {  
  7.         viewLists = lists;  
  8.     }  
  9.   
  10.     @Override  
  11.     public int getCount() {                                                                 //获得size   
  12.         // TODO Auto-generated method stub   
  13.         return viewLists.size();  
  14.     }  
  15.   
  16.     @Override  
  17.     public boolean isViewFromObject(View arg0, Object arg1) {                           
  18.         // TODO Auto-generated method stub   
  19.         return arg0 == arg1;  
  20.     }  
  21.       
  22.     @Override  
  23.     public void destroyItem(View view, int position, Object object)                       //销毁Item   
  24.     {  
  25.         ((ViewPager) view).removeView(viewLists.get(position));  
  26.     }  
  27.       
  28.     @Override  
  29.     public Object instantiateItem(View view, int position)                                //实例化Item   
  30.     {  
  31.         ((ViewPager) view).addView(viewLists.get(position), 0);  
  32.           
  33.         return viewLists.get(position);  
  34.     }  
  35.       
  36. }  

转载于:https://www.cnblogs.com/Free-Thinker/p/3391459.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通过浏览器在所有响应内容中查找文本

使用浏览器的开发者工具查找响应文件的内容 ** Chrome ** 版本&#xff1a; 快捷键&#xff1a;CtrlShiftF 可以看到已经查找出来了 ** firefox ** 版本

【Leetcode】【Easy】Implement strStr()

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 解题&#xff1a; 本题为典型的KMP算法考察题&#xff0c;KMP算法描述为&#xff1a; 设主串S&#xff0c;匹配串P&#xff0c;i为S的索引下…

Jenkins入门指南

新手学习使用Jenkins 安装好Jenkins后如何运行脚本 1.新建item 2.输入任务名称&#xff0c;选择项目类型&#xff0c;点击确定 3.填个描述就好了&#xff0c;新手学jenkins&#xff0c;其他都不看&#xff0c;跑起来再说 4.点这个高级&#xff0c;选择你要运行的脚本所在…

Sublime Text 3 史上最性感的编辑器

↑ ↑ ↑ ↑ ↑ 请看文件夹 ↑ ↑ ↑ ↑ ↑ 下载 / 安装 windows / MAC OS 官网下载&#xff0c;双击安装&#xff0c;这个都会吧&#xff5e; linux linux下安装&#xff0c;一种办法是从官网下载 tar.bz &#xff0c;手动安装。 这里介绍用 apt-get 自己主动安装方法&#xf…

swift入门之TableView

IOS8更新了&#xff0c;oc还将继续但新增了swift语言&#xff0c;能够代替oc编写ios应用&#xff0c;本文将使用swift作为编写语言&#xff0c;为大家提供step by step的教程。 工具 ios每次更新都须要更新xcode&#xff0c;这次也不例外&#xff0c;但使用xcode6&#xff0c;须…

Jmeter BeanShell学习(一) - BeanShell取样器(一)

通过利用BeanShell取样器设置请求发送的参数。 第一步&#xff1a;添加BeanShell取样器 第二步&#xff1a;在BeanShell中输入执行的代码 log.info("脚本开始执行"); //意思是将字符串输出到日志消息中 vars.put("username","123163.com");//…

Jmeter BeanShell学习(一) - BeanShell取样器(二)

利用BeanShell取样器获取接口返回的JSON格式的结果&#xff0c;并将该结果写入到文件。 第一步&#xff1a;添加BeanShell取样器 前面几个取样器的内容查看&#xff1a; https://blog.csdn.net/goodnameused/article/details/96985514 第二步&#xff1a;查看返回的结果格式 …

160 - 50 DueList.5

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查壳 可以看出程序有加壳&#xff0c;那么我们下一步就是脱壳了。 0x01 脱壳 看上去没什么特别的地方&#xff0c;就直接 单步跟踪法 来脱壳吧 近call F7&#xff0c;远call F8 来到这里 哈&…

关键路径的概念和算法

AOE网&#xff1a;在一个表示工程的带权有向图中&#xff0c;用顶点表示事件&#xff0c;用有向边表示活动&#xff0c;边上的权值表示活动的持续时间&#xff0c;称这样的有向图叫做边表示活动的网&#xff0c;简称AOE网。AOE网中没有入边的顶点称为始点&#xff08;或源点&am…

160 - 51 DueList.6

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查壳 发现程序没有加壳&#xff0c;那么我们可以直接分析了。 0x01 分析 运行程序看一看 看到错误信息的字符串后我们可以直接搜索了。 可以看到程序会比较输入的长度是否为8位&#xff0c;如…

160 - 52 egis.1

环境&#xff1a;windows xp 工具&#xff1a; 1、OllyDBG 2、exeinfo 3、IDA 0x00 查壳 加了UPX壳&#xff0c;那么就要脱壳了。可以使用单步法来脱壳。 UPX壳还是比较简单的&#xff0c;开头pushad&#xff0c;找个popad&#xff0c;然后就是jmp了。 然后就可以用OD来…

玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)

小弟今天记录一下在Linux系统下面的MySQL的简单使用&#xff0c;如下&#xff1a; 服务启动与关闭 启动与关闭 查看版本 环境 Linux版本&#xff1a;centeros 6.6&#xff08;下面演示&#xff09;&#xff0c;Ubuntu 12.04&#xff08;参见文章末尾红色标注字体&#xff09; M…

实验八第二题

转载于:https://www.cnblogs.com/huangsilinlana/p/3411550.html

敏捷自动化测试(1)—— 我们的测试为什么不够敏捷?

测试是为了保证软件的质量&#xff0c;敏捷测试关键是保证可以持续、及时的对软件质量情况进行全面的反馈。由于在敏捷开发过程中每个迭代都会增加功能、修复缺陷或重构代码&#xff0c;所以在完成当前迭代新增特性测试工作的同时&#xff0c;还要通过回归测试来保证历史功能不…

ios 程序学习

马上着手开发iOS应用程序&#xff1a;五、提交应用与寻找信息 2013-01-11 15:36 佚名 apple.com 我要评论(0) 字号&#xff1a;T | T本文介绍了您已经学习完如何开发一个优秀的iOS应用之后&#xff0c;应该掌握的内容&#xff0c;包括将您的应用提交到App Store让其他人下载&am…

lucene4入门(2)搜索

欢迎转载http://www.cnblogs.com/shizhongtao/p/3440479.html 接着上一篇&#xff0c;这里继续搜索&#xff0c;对于搜索和创建一样&#xff0c;首先你要确定搜索位置&#xff0c;然后用规定的类来读取。还要注意一点&#xff0c;确定分词器&#xff0c;因为不同的分词器所创建…

Topcoder SRM 648 (div.2)

第一次做TC全部通过&#xff0c;截图纪念一下。 终于蓝了一次&#xff0c;也是TC上第一次变成蓝名&#xff0c;下次就要做Div.1了&#xff0c;希望div1不要挂零。。。_(:зゝ∠)_ A. KitayutaMart2 万年不变的水题。 #include<cstdio> #include<cstring> #include&…

OpenFire源码学习之十九:在openfire中使用redis插件(上)

Redis插件 介绍 Redis是目前比较流行的NO-SQL&#xff0c;基于K,V的数据库系统。关于它的相关操作信息&#xff0c;本人这里就不做重复了&#xff0c;相关资料可以看这个网站http://www.redis.io/(官网)、http://www.redis.cn/(中文站)。 这里本人想说的是&#xff0c;拿Redis做…

没有文件扩展“.js”的脚本引擎问题解决

安装MinGW的时候提示没有文件扩展“.js”的脚本引擎。原因&#xff1a;系统安装Dreamwear、UltraEdit、EditPlus后修改了.js文件的默认打开方式。当想直接执行js脚本时就会出现此错误。解决办法&#xff1a;打开注册表编辑器&#xff0c;定位[HKEY_CLASSES_ROOT.js]这一项&…

160 - 54 eKH

环境&#xff1a;windows xp 工具&#xff1a; 1、OllyDBG 2、IDA 3、exeinfo 查壳发现是程序无壳且用Delphi语言编写 可以通过搜索字符串的方式定位关键函数地址 这里定位到是 00427B44ReadInput(a2, &v17); // 读取输入的usernameif ( StrL…