android-每日demo
来源:互联网 发布:网络分层模型详解 编辑:程序博客网 时间:2024/06/10 09:58
ViewPager 的使用
ViewPager的功能是让页面能随手势左右滑动而滑动。
首先准备三张页面,layout1,layout2,layout3,代码如下;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:id="@+id/layout1" android:background="#aa0000"><TextView android:id="@+id/view1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="one"/></RelativeLayout>
三个页面代码差不多,只是id不同,text值分别为one,two,three;
然后是主页面的代码,main.xml;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" ><android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <android.support.v4.view.PagerTabStrip android:id="@+id/pager_tab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top"/></android.support.v4.view.ViewPager></RelativeLayout>其中android.support.v4.view.ViewPager 是主体内容,android.support.v4.view.PagerTabStrip是顶栏TAB。
然后是MainActivity代码;
package com.example.demo1;import java.util.ArrayList;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.app.Activity;public class MainActivity extends Activity {private View view1;private View view2;private View view3;private ArrayList<View> viewList;private ViewPager viewPager;private ArrayList<String> titleList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager = (ViewPager)findViewById(R.id.viewpager);LayoutInflater tInflater = getLayoutInflater();view1 = tInflater.inflate(R.layout.layout1, null);view2 = tInflater.inflate(R.layout.layout2, null);view3 = tInflater.inflate(R.layout.layout3, null);viewList = new ArrayList<View>();viewList.add(view1);viewList.add(view2);viewList.add(view3);titleList = new ArrayList<String>();titleList.add("yi");titleList.add("er");titleList.add("san");viewPager.setAdapter(pagerAdapter);viewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {System.out.println("选中");}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {System.out.println("旋转");}@Overridepublic void onPageScrollStateChanged(int arg0) {System.out.println("改变");}});}PagerAdapter pagerAdapter = new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(viewList.get(position));//System.out.println("cur positon======"+position);return viewList.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(viewList.get(position));}@Overridepublic CharSequence getPageTitle(int position) {return titleList.get(position);}@Overridepublic int getCount() {//System.out.println("size =========="+viewList.size());return viewList.size();}};}ViewPager跟ListView一样,需要一个适配器来相辅,这个适配器的名字叫做PagerAdaper;
首先是适配器的用法,很简单,三步:
一找到要显示的内容,显示的内容为三张页面,也就是三个layout,通过LayoutInflater来加载,存放在一个list里;
二找到要显示(内容)的容器,容器是android.support.v4.view.ViewPager,通过findViewById找到;
三设置适配器;setAdaper。
然后是重写PagerAdaper,里面有四个方法必须,一为isViewFromObject,从名字可以看出是干嘛的;二为getCount,得到view的个数;三为instantiateItem,增加页面;四为destroyItem,删除页面;都很简单,通过代码就能理解意思。
最后是整个demo的执行顺序:
首先自然是onCreate;
然后一直顺序往下到setAdapter;
然后跳到PagerAdaper里,首先执行的是getCount,这个方法会一直执行,直到一个页面被停下来,也就是手指不再滑动,而这个方法也是PagerAdaper的关键;
然后是instantiateItem方法,当position发生改变时,会调用此方法;
而destroyItem内也有一个position,但是这个position比instantiateItem中的要小2,也就是说当加载到第三张页面时,第一张页面才会被删除。
0 0
- android-每日demo
- android api demo 每日一例:api demo 概要
- android demo
- android demo
- android demo
- Android Demo
- Android 每日学习笔记
- Android知识每日小计
- Android每日一记
- 【每日一点】android 震动
- 【每日一点】android VideoView
- iOS每日一记 之 demo的用法
- android每日面试题1
- android每日面试题2
- android每日面试题3
- Android每日面试题4
- Android App每日更换壁纸
- Android Studio每日小技巧
- ANDROID , ECLIPSE编译通过,运行报 Get data from file(XXX) failed
- 服务器设计求助
- jmeter 简单介绍
- DOMTimeStamps 不同
- HTML在线文本编辑器实现原理
- android-每日demo
- 美国mba是最值钱的么??
- Linux网络配置 2
- java 产生多个不重复的随机数
- davinci 6446 UART1 rs485驱动
- 用HTML+JS实现Android闹钟功能,附带Alarm代码分享
- 关于UITableView的Cell复用谈谈一些心得
- mysql error日志的一个问题
- 红宝书笔记《第7版》