gpt4 book ai didi

详解Android App中创建ViewPager组件的方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解Android App中创建ViewPager组件的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

现在很多app一打开就是一个viewpager,然后可以用手指滑,每滑一次就换一张图,底下还会有圈圈表示说现在滑到第几章~ 通常这些图片都是放功能简介或是使用教学之类的,我的需求很简单,就是上面提到的那样而已。 有两种做法,一种是找现有套件,查了一堆资料每个都跟我推荐viewpagerindicator这套,我之前也看过这套,只是看起来需要有fragment再加上google play范例好像载不到了,所以只好自己实做一个。 viewpager的实作可参考android viewpager使用详解里面的程序码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@overrideprotected void oncreate(bundle savedinstancestate) {
   super .oncreate(savedinstancestate);
   setcontentview(r.layout.activity_intro);
 
   mviewpager = (viewpager) findviewbyid(r.id.viewpager);
 
   final layoutinflater minflater = getlayoutinflater().from( this );
 
   view v1 = minflater.inflate(r.layout.intro_layout_1, null );
   view v2 = minflater.inflate(r.layout.intro_layout_2, null );
   view v3 = minflater.inflate(r.layout.intro_layout_3, null );
   view v4 = minflater.inflate(r.layout.intro_layout_4, null );
 
   viewlist = new arraylist<view>();
   viewlist.add(v1);
   viewlist.add(v2);
   viewlist.add(v3);
   viewlist.add(v4);
 
   mviewpager.setadapter( new myviewpageradapter(viewlist));
   mviewpager.setcurrentitem( 0 );}
myviewpageradapter
public class myviewpageradapter extends pageradapter {
   private list<view> mlistviews;
 
   public myviewpageradapter(list<view> mlistviews) {
     this .mlistviews = mlistviews;
   }
 
   @override
   public void destroyitem(viewgroup container, int position, object object)  {
     container.removeview((view) object);
   }
 
 
   @override
   public object instantiateitem(viewgroup container, int position) {
     view view = mlistviews.get(position);
     container.addview(view);
     return view;
   }
 
   @override
   public int getcount() {
     return mlistviews.size();
   }
 
   @override
   public boolean isviewfromobject(view arg0, object arg1) {
     return arg0==arg1;
   }}

这样子你就有一个viewpager了 。

下面我们来具体看一下viewpager的用法: 1、viewpager创建步骤 ① 在xml布局中加入android.support.v4.view.viewpager 。

② 加载显示的页卡将layout布局转换为view对象 。

  (1)  。

?
1
2
layoutinflater lf getlayoutinflater().from( this );
   lf.inflate(resource,root);

  (2) 。

?
1
view.inflate(context,resource,root);

③ 配置adapter(三种adapter) 。

 (1)pageradapter 数据源:list<view>  (2)fragmentpageradapter 数据源:list<fragment>  (3)fragmentstatepageradapter 数据源:list<fragment> 2、代码示例 新建四个fragment和他们的布局下面是mainactivity的xml布局:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<android.support.v4.view.viewpager
     android:id= "@+id/pager"
     android:layout_width= "match_parent"
     android:layout_height= "match_parent"
     android:layout_gravity= "center" >
 
     <android.support.v4.view.pagertabstrip
       android:id= "@+id/tab"
       android:layout_width= "wrap_content"
       android:layout_height= "wrap_content"
       android:layout_gravity= "top" >
     </android.support.v4.view.pagertabstrip>
     <!-- 底部显示标题与上面的顶部显示不能同时出现
     <android.support.v4.view.pagertitlestrip
       android:id= "@+id/title"
       android:layout_width= "wrap_content"
       android:layout_height= "wrap_content"
       android:layout_gravity= "bottom" >
     </android.support.v4.view.pagertitlestrip>
     -->
   </android.support.v4.view.viewpager>

第一种pageradapter 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class mypageradapter extends pageradapter {
 
   private list<view> viewlist;
   private list<string> titlelist;
 
   public mypageradapter(list<view> viewlist,list<string> titlelist){
     this .viewlist = viewlist;
     this .titlelist = titlelist;
   }
 
   /**
    * 返回页卡的数量
    */
   @override
   public int getcount() {
 
     return viewlist.size();
   }
 
    /**
    * view是否来自对象
    */
   @override
   public boolean isviewfromobject(view arg0, object arg1) {
 
     return arg0==arg1;
   }
    /**
    * 实例化一个页卡
    */
   @override
   public object instantiateitem(viewgroup container, int position) {
     container.addview(viewlist.get(position));
     return viewlist.get(position);
   }
    /**
    * 销毁一个页卡
    */
   @override
   public void destroyitem(viewgroup container, int position, object object) {
 
     container.removeview(viewlist.get(position));
 
   }
 
   /**
    * 设置viewpager的标题
    */
   @override
   public charsequence getpagetitle( int position) {
 
     return titlelist.get(position);
   }
 
}

第二种fragmentpageradapter 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class myfragmentpageradapter extends fragmentpageradapter {
   private list<fragment> fraglist;
   private list<string> titlelist;
   public myfragmentpageradapter(fragmentmanager fm,list<fragment> fraglist,list<string> titlelist) {
     super (fm);
     this .fraglist = fraglist;
     this .titlelist = titlelist;
   }
 
 
   @override
   public fragment getitem( int arg0) {
 
     return fraglist.get(arg0);
   }
 
   @override
   public charsequence getpagetitle( int position) {
 
     return titlelist.get(position);
   }
 
   @override
   public int getcount() {
 
     return fraglist.size();
   }
 
}

第三种fragmentstatepageradapter(该适配器可以动态销毁fragment) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class myfragmentpageradapter2 extends fragmentstatepageradapter { //该适配器可以动态销毁
   private list<fragment> fraglist;
   private list<string> titlelist;
   public myfragmentpageradapter2(fragmentmanager fm,list<fragment> fraglist,list<string> titlelist) {
     super (fm);
     this .fraglist = fraglist;
     this .titlelist = titlelist;
   }
 
 
   @override
   public fragment getitem( int arg0) {
 
     return fraglist.get(arg0);
   }
 
   @override
   public charsequence getpagetitle( int position) {
 
     return titlelist.get(position);
   }
 
   @override
   public int getcount() {
 
     return fraglist.size();
   }
 
   @override
   public object instantiateitem(viewgroup arg0, int arg1) {
 
     return super .instantiateitem(arg0, arg1);
   }
   @override
   public void destroyitem(viewgroup container, int position, object object) {
 
     super .destroyitem(container, position, object);
   }
 
}

mainactivity里使用getsupportfragmentmanager()该activity必须继承fragmentactivity:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class mainactivity extends fragmentactivity implements onpagechangelistener{
   private list<view> viewlist;
   private list<string> titlelist;
   private viewpager pager;
   private pagertabstrip tab; //顶部标题
 
   private list<fragment> fraglist;
 
   @override
   protected void oncreate(bundle savedinstancestate) {
     super .oncreate(savedinstancestate);
     setcontentview(r.layout.activity_main);
     viewlist = new arraylist<view>();
     titlelist = new arraylist<string>();
     tab = (pagertabstrip) findviewbyid(r.id.tab);
 
     view view1 = view.inflate( this ,r.layout.view1, null );
     view view2 = view.inflate( this ,r.layout.view2, null );
     view view3 = view.inflate( this ,r.layout.view3, null );
     view view4 = view.inflate( this ,r.layout.view4, null );
 
     viewlist.add(view1);
     viewlist.add(view2);
     viewlist.add(view3);
     viewlist.add(view4);
 
     fraglist = new arraylist<fragment>();
     fraglist.add( new fragment1());
     fraglist.add( new fragment2());
     fraglist.add( new fragment3());
     fraglist.add( new fragment4());
 
     //为viewpager页卡设置标题
     titlelist.add( "第一页" );
     titlelist.add( "第二页" );
     titlelist.add( "第三页" );
     titlelist.add( "第四页" );
     //为pagertabstrip设置一些属性
     tab.setbackgroundcolor(color.white);
     tab.setdrawfullunderline( false );
     tab.settabindicatorcolor(color.blue);
 
     pager = (viewpager) findviewbyid(r.id.pager);
     //mypageradapter adapter = new mypageradapter(viewlist,titlelist);
     //myfragmentpageradapter adapter = new myfragmentpageradapter(getsupportfragmentmanager(), fraglist, titlelist);
     /**
      * 使用getsupportfragmentmanager()该activity必须继承fragmentactivity
      */
     myfragmentpageradapter2 adapter = new myfragmentpageradapter2(getsupportfragmentmanager(), fraglist, titlelist);
     pager.setadapter(adapter);
     pager.setonpagechangelistener( this );
   }
 
   @override
   public void onpagescrollstatechanged( int arg0) {
 
   }
 
   @override
   public void onpagescrolled( int arg0, float arg1, int arg2) {
 
   }
 
   @override
   public void onpageselected( int arg0) {
     toast.maketext( this , "当前是第" +(arg0+ 1 )+ "个界面" , 0 ).show();
 
   }
 
}

最后此篇关于详解Android App中创建ViewPager组件的方法的文章就讲到这里了,如果你想了解更多关于详解Android App中创建ViewPager组件的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com