androidUI设计之旅 ----ViewPager的基本应用
来源:互联网 发布:淘宝招聘在家兼职客服 编辑:程序博客网 时间:2024/06/07 13:43
ViewPager多页面得滑动效果在实际编程中,我们经常用到,比说说用他事先tab,和图片的一张一张的切换效果。他可以使页面做的好看,用户体验也会很舒服。
自3.0起,sdk中提供一个一个jar包,名字叫:android.support.v4.jar。用这个包可以事先版本兼容。其中,就有一个可以事先左右滑动的类ViewPager。
首先要了解一点基本知识:
继承PagerAdapter时候,至少重写一下几个方法:
1.getCount()
2. instantiateItem();
3.destroyItem();
4.isViewFromObject();
我们要实现的效果:
布局文件要这么写:activity_main.xml
<android.support.v4.view.ViewPager android:id="@+id/ViewPager1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" > <android.support.v4.view.PagerTitleStrip android:id="@+id/PagerTitle1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" > </android.support.v4.view.PagerTitleStrip> </android.support.v4.view.ViewPager>
自己去写三个View吧。随便建三个XML就可以。
package com.example.android_viewpager;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.support.v4.view.PagerAdapter;import android.support.v4.view.PagerTitleStrip;import android.support.v4.view.ViewPager;import android.view.Menu;import android.view.View;import android.view.ViewGroup;public class MainActivity extends Activity {private ViewPager viewPager;private PagerTitleStrip pagerTitleStrip;private List<View> list;private List<String> list2;private View view1;private View view2;private View view3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager = (ViewPager) findViewById(R.id.ViewPager1);pagerTitleStrip = (PagerTitleStrip) findViewById(R.id.PagerTitle1);list = new ArrayList<View>();list2 = new ArrayList<String>();view1 = getLayoutInflater().inflate(R.layout.view1, null);view2 = getLayoutInflater().inflate(R.layout.view2, null);view3 = getLayoutInflater().inflate(R.layout.view3, null);list.add(view1);list.add(view2);list.add(view3);list2.add("tab1");list2.add("tab2");list2.add("tab3");viewPager.setAdapter(new myViewPagerAdapter());}class myViewPagerAdapter extends PagerAdapter {// 返回ViewPager包含的不觉的个数@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}// 绑定一个特殊的对象 这个对象由instantiateItem返回@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}// 销毁View@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stub((ViewPager) container).removeView(list.get(position));}// 初始化@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stub((ViewPager) container).addView(list.get(position));return list.get(position);}// 标题@Overridepublic CharSequence getPageTitle(int position) {// TODO Auto-generated method stubreturn list2.get(position);}}}
ViewPager 的页面滑动监听。
当装在页面数据的时候,我们就不得不考虑在哪个方法里面动态加载数据。哪个方法比较合适呢?下面我们来讨论一下。
结果是:onPageScrollStateChanged().为甚么呢?因为这个方法是在一个页面完全进入到屏幕上时,才回调的。
Viewpager的设置监听:
viewPager.setOnPageChangeListener(new OnPageChangeListener() {//当前页面@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stubSystem.out.println("onPageSelected"+arg0);}//页面移动的时候出发@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stubSystem.out.println("=========================");System.out.println("arg0"+arg0);System.out.println("arg1"+arg1);System.out.println("arg2"+arg2);System.out.println("=========================");}//页面全部进入时候触发@Overridepublic void onPageScrollStateChanged(int arg0) {// 有三种状态(0,1,2)。arg0 ==1的时正在滑动,arg0==2的滑动完毕了,arg0==0的什么都没做。System.out.println("onPageScrollStateChanged"+arg0);}});
- androidUI设计之旅 ----ViewPager的基本应用
- androidUI设计之旅 ----SeekBar的基本应用
- androidUI设计之旅 ----TextView01
- androidUI设计之旅 ----TextView02
- androidUI设计之旅 ----TextView03
- androidUI设计之旅 ----TextView04
- AndroidUI之开关效果的设计
- AndroidUI之开关效果的设计
- AndroidUI之开关效果的设计
- androidUI设计之旅 ----布局文件属性解析
- 【Android 应用开发】AndroidUI设计 之 图片浏览器
- AndroidUI设计之ViewPaper详解
- AndroidUI设计之ViewPaper详解
- AndroidUI设计 之 图片浏览器
- AndroidUI设计之ViewPaper详解
- AndroidUI设计 之 图片浏览器
- 【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现
- AndroidUI设计
- C++友元小结
- 生产者/消费者模式(五)环形缓冲区
- 生产者/消费者模式 (六) 环形缓冲区的实现
- [LeetCode] Largest Rectangle in Histogram
- 【转】xfce4桌面自动整理脚本
- androidUI设计之旅 ----ViewPager的基本应用
- C语言(奇数和)
- 去除字符串首尾空格
- 聚类算法 K-means
- HeapFree
- 【黑马程序员】C#之冒泡排序
- 纯JS弹窗,没考虑兼容性,重用性,顺手写的
- java中为什么非静态嵌套类不能有静态变量?&& Thinking Java内存分配、管理总结
- ADO.NET实现CRUD