android中的左右滑屏实现By ViewPagerWord格式文档下载.docx
- 文档编号:7891702
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:27
- 大小:72.23KB
android中的左右滑屏实现By ViewPagerWord格式文档下载.docx
《android中的左右滑屏实现By ViewPagerWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《android中的左右滑屏实现By ViewPagerWord格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。
android:
orientation="
vertical"
5
!
--此处需要给出全路径-->
6
android.support.v4.view.ViewPager
7
id="
@+id/viewpagerLayout"
/>
8
/LinearLayout>
layout1.xml
TextViewandroid:
textAppearance="
attr/textAppearanceLarge"
wrap_content"
@+id/textView1"
text="
第一页"
/TextView>
EditTextandroid:
match_parent"
@+id/editText1"
requestFocus>
/requestFocus>
/EditText>
9
layout2.xml
第二页"
layout3.xml
第三页"
主程序
001
packagea.b;
002
003
importjava.util.ArrayList;
004
importjava.util.List;
005
006
importandroid.app.Activity;
007
importandroid.os.Bundle;
008
importandroid.os.Parcelable;
009
importandroid.support.v4.view.PagerAdapter;
010
importandroid.support.v4.view.ViewPager;
011
importandroid.support.v4.view.ViewPager.OnPageChangeListener;
012
importandroid.util.Log;
013
importandroid.view.LayoutInflater;
014
importandroid.view.View;
015
importandroid.widget.EditText;
016
017
publicclassTestViewPagerextendsActivity{
018
privateViewPagermyViewPager;
019
020
privateMyPagerAdaptermyAdapter;
021
022
privateLayoutInflatermInflater;
023
privateList<
View>
mListViews;
024
privateViewlayout1=null;
025
privateViewlayout2=null;
026
privateViewlayout3=null;
027
028
@Override
029
protectedvoidonCreate(BundlesavedInstanceState){
030
super.onCreate(savedInstanceState);
031
setContentView(R.layout.viewpager_layout);
032
myAdapter=newMyPagerAdapter();
033
myViewPager=(ViewPager)findViewById(R.id.viewpagerLayout);
034
myViewPager.setAdapter(myAdapter);
035
036
mListViews=newArrayList<
();
037
mInflater=getLayoutInflater();
038
layout1=mInflater.inflate(R.layout.layout1,null);
039
layout2=mInflater.inflate(R.layout.layout2,null);
040
layout3=mInflater.inflate(R.layout.layout3,null);
041
042
mListViews.add(layout1);
043
mListViews.add(layout2);
044
mListViews.add(layout3);
045
046
//初始化当前显示的view
047
myViewPager.setCurrentItem
(1);
048
049
//初始化第二个view的信息
050
EditTextv2EditText=(EditText)layout2.findViewById(R.id.editText1);
051
v2EditText.setText("
动态设置第二个view的值"
);
052
053
myViewPager.setOnPageChangeListener(newOnPageChangeListener(){
054
055
056
publicvoidonPageSelected(intarg0){
057
Log.d("
k"
"
onPageSelected-"
+arg0);
058
//activity从1到2滑动,2被加载后掉用此方法
059
Viewv=mListViews.get(arg0);
060
EditTexteditText=(EditText)v.findViewById(R.id.editText1);
061
editText.setText("
动态设置#"
+arg0+"
edittext控件的值"
062
}
063
064
065
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
066
onPageScrolled-"
067
//从1到2滑动,在1滑动前调用
068
069
070
071
publicvoidonPageScrollStateChanged(intarg0){
072
onPageScrollStateChanged-"
073
//状态有三个0空闲,1是增在滑行中,2目标加载完毕
074
/**
075
*Indicatesthatthepagerisinanidle,settledstate.Thecurrentpage
076
*isfullyinviewandnoanimationisinprogress.
077
*/
078
//publicstaticfinalintSCROLL_STATE_IDLE=0;
079
080
*Indicatesthatthepageriscurrentlybeingdraggedbytheuser.
081
082
//publicstaticfinalintSCROLL_STATE_DRAGGING=1;
083
084
*Indicatesthatthepagerisintheprocessofsettlingtoafinalposition.
085
086
//publicstaticfinalintSCROLL_STATE_SETTLING=2;
087
088
089
});
090
091
092
093
privateclassMyPagerAdapterextendsPagerAdapter{
094
095
096
publicvoiddestroyItem(Viewarg0,intarg1,Objectarg2){
097
destroyItem"
098
((ViewPager)arg0).removeView(mListViews.get(arg1));
099
100
101
102
publicvoidfinishUpdate(Viewarg0){
103
finishUpdate"
104
105
106
107
publicintgetCount(){
108
getCount"
109
returnmListViews.size();
110
111
112
113
publicObjectinstantiateItem(Viewarg0,intarg1){
114
instantiateItem"
115
((ViewPager)arg0).addView(mListViews.get(arg1),0);
116
returnmListViews.get(arg1);
117
118
119
120
publicbooleanisViewFromObject(Viewarg0,Objectarg1){
121
isViewFromObject"
122
returnarg0==(arg1);
123
124
125
126
publicvoidrestoreState(Parcelablearg0,ClassLoaderarg1){
127
restoreState"
128
129
130
131
publicParcelablesaveState(){
132
saveState"
133
returnnull;
134
135
136
137
publicvoidstartUpdate(Viewarg0){
138
startUpdate"
139
140
141
142
143
在实机上测试后,非常流畅,这也就是说官方版的左右滑屏控件已经实现
目前,关于viewpager的文章非常少,本文是通过阅读viewpager源代码分析出的写法
当然此文章仅是抛砖引玉,而且属于框架式程序,目的就是让读者了解API的基本用法
希望这篇原创文章对大家有帮助
欢迎感兴趣的朋友一起讨论
共同学习,共同进步
另外,ViewPager的注释上有这么一段话,大体意思是该控件目前属于早期实现,后续会有修改
01
02
*Layoutmanagerthatallowstheusertoflipleftandright
03
*throughpagesofdata.Yousupplyanimplementationofa
04
*{@linkPagerAdapter}togeneratethepagesthattheviewshows.
05
*
06
*<
p>
Notethisclassiscurrentlyunderearlydesignand
07
*development.TheAPIwilllikelychangeinlaterupdatesof
08
*thecompatibilitylibrary,requiringchangestothesourcecode
09
*ofappswhentheyarecompiledagainstthenewerversion.<
/p>
10
关键字:
android,viewpager,PagerAdapter
2011移动开发者大会亮点之二:
七大论坛神秘嘉宾闪亮登场!
“IT适合你吗?
”智力挑战
ViewPagerexample-实现左右两个屏幕的切换
分类:
android-viewpager2011-09-1313:
21160人阅读评论(0)收藏举报
起初最早接触到左右两个屏幕切换的是在《创新源于模仿之三:
实现左右两个屏幕的切换》这篇文章上,感谢作者为我们提供了这么好的DEMO。
什么是ViewPager呢?
它是实现左右两个屏幕平滑地切换的一个类,它是Google提供的,作为Android的一个补充。
先上个效果图把,让大家有个直观的认识。
我们在网上搜索这相关到主题的时候,会看到有很多关于这方面的问题:
如何平滑?
水平移动?
等等。
现在,我们可以自己不去亲自做这个费力的事情了,只需要使用到一个叫ViewPager的类即可。
ViewPager是最近在Compatibilitypackage发布的,支持android1.6+,如果要使用的话,要通过SDKManager去更新Compatibilitypackage,具体使用方法在<
SDK_DOC_PATH>
/sdk/compatibility-library.html(SDK_DOC_PATH是自带Android文档的位置,需要更新到最新的文档才有)。
《创新源于模仿之三:
实现左右两个屏幕的切换》提供了Workspace实现了左右屏幕的切换,现在GoogleI/O上已经发布了这样的Workspace类,方便我们大家去使用,稍后我会同本文DEMO的源代码一起发布。
那ViewPager和Workspace有什么样的区别呢?
先看下apidoc的说法:
Layoutmanagerthatallowstheusertoflipleftandrightthroughpagesofdata.YousupplyanimplementationofaPagerAdaptertogeneratethepagesthattheviewshows.
如上所述,ViewPager提供了一个适配器,方便我们对各个View进行控制,而Workspace需要我们手动去添加,它相当于是一个"
静态切换"
。
接下来我将介绍下如何使用:
1、下载来Android
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android中的左右滑屏实现By ViewPager android 中的 左右 实现 By
![提示](https://static.bingdoc.com/images/bang_tan.gif)