Actionbarsherlock与Viewpagerindicator详解

来源:互联网 发布:勇士对战灰熊数据 编辑:程序博客网 时间:2024/06/16 16:33

From: http://blogsit.iteye.com/blog/1934633

此篇博客主要详细介绍时下比较流行的两个android开源组件的使用,AnctionBarsherlock与viewpagerindicator,具体使用将以demo形式呈现,先上效果图,看是否是你需要的。



 

一步:下载资源,github 是好东东。

       这是两个开源组件的Github地址,具体你想用Git同步还是svn,自选

       https://github.com/JakeWharton/ActionBarSherlock

       https://github.com/JakeWharton/Android-ViewPagerIndicator

二步:开始工程的配置和组件的使用。在工程右击--properties --android 添加Library



 

       添加viewpagerindicator组件的布局文件simple_tabs.xml

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent">  
  7.   
  8.     <com.viewpagerindicator.TabPageIndicator  
  9.         android:id="@+id/indicator"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_width="fill_parent"  
  12.         />  
  13.     <android.support.v4.view.ViewPager  
  14.         android:id="@+id/pager"  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="0dp"  
  17.         android:layout_weight="1"  
  18.         />  
  19.   
  20. </LinearLayout>  

 添加Fragments的布局文件

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical">  
  6.   
  7.   
  8.   
  9.     <TextView  
  10.         android:id="@+id/text"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:layout_gravity="center_vertical|center_horizontal"  
  14.         android:text="Large Text"  
  15.         android:textAppearance="?android:attr/textAppearanceLarge" />  
  16.   
  17. </LinearLayout>  

 创建 TabDemoActivity继承sherlockFragmentActivity

Java代码  收藏代码
  1. package com.example.blogsit;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentManager;  
  6. import android.support.v4.app.FragmentPagerAdapter;  
  7. import android.support.v4.view.ViewPager;  
  8.   
  9. import com.actionbarsherlock.app.SherlockFragmentActivity;  
  10. import com.viewpagerindicator.PageIndicator;  
  11. import com.viewpagerindicator.TabPageIndicator;  
  12. /** 
  13.  * 微博 : @陈华blogsit 
  14.  * @author blogsit.cn 
  15.  * 
  16.  */  
  17. public class TabDemoActivity extends SherlockFragmentActivity {  
  18.       
  19.     private static final String[] CONTENT = new String[] { "分组一""分组二""分组三""分组四""分组五" };  
  20.       
  21.     TabFragmentAdapter mAdapter;  
  22.     ViewPager mPager;  
  23.     PageIndicator mIndicator;  
  24.       
  25.     @Override  
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.           
  29.         setContentView(R.layout.simple_tabs);  
  30.           
  31.         mAdapter = new TabFragmentAdapter(getSupportFragmentManager());  
  32.   
  33.         mPager = (ViewPager)findViewById(R.id.pager);  
  34.         mPager.setAdapter(mAdapter);  
  35.   
  36.         mIndicator = (TabPageIndicator)findViewById(R.id.indicator);  
  37.         mIndicator.setViewPager(mPager);  
  38.     }  
  39.       
  40.     class TabFragmentAdapter extends FragmentPagerAdapter {       
  41.         private int mCount = CONTENT.length;  
  42.   
  43.         public TabFragmentAdapter(FragmentManager fm) {  
  44.             super(fm);  
  45.         }  
  46.   
  47.         @Override  
  48.         public Fragment getItem(int position) {  
  49.             return TabFragment.newInstance(String.valueOf(position));   
  50.         }  
  51.   
  52.         @Override  
  53.         public int getCount() {  
  54.             return mCount;  
  55.         }  
  56.           
  57.         @Override  
  58.         public CharSequence getPageTitle(int position) {  
  59.             return CONTENT[position];  
  60.         }  
  61.     }  
  62.   
  63. }  

 添加Fragment子类TabFragment

Java代码  收藏代码
  1. package com.example.blogsit;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentManager;  
  6. import android.support.v4.app.FragmentPagerAdapter;  
  7. import android.support.v4.view.ViewPager;  
  8.   
  9. import com.actionbarsherlock.app.SherlockFragmentActivity;  
  10. import com.viewpagerindicator.PageIndicator;  
  11. import com.viewpagerindicator.TabPageIndicator;  
  12. /** 
  13.  * 微博 : @陈华blogsit 
  14.  * @author blogsit.cn 
  15.  * 
  16.  */  
  17. public class TabDemoActivity extends SherlockFragmentActivity {  
  18.       
  19.     private static final String[] CONTENT = new String[] { "分组一""分组二""分组三""分组四""分组五" };  
  20.       
  21.     TabFragmentAdapter mAdapter;  
  22.     ViewPager mPager;  
  23.     PageIndicator mIndicator;  
  24.       
  25.     @Override  
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.           
  29.         setContentView(R.layout.simple_tabs);  
  30.           
  31.         mAdapter = new TabFragmentAdapter(getSupportFragmentManager());  
  32.   
  33.         mPager = (ViewPager)findViewById(R.id.pager);  
  34.         mPager.setAdapter(mAdapter);  
  35.   
  36.         mIndicator = (TabPageIndicator)findViewById(R.id.indicator);  
  37.         mIndicator.setViewPager(mPager);  
  38.     }  
  39.       
  40.     class TabFragmentAdapter extends FragmentPagerAdapter {       
  41.         private int mCount = CONTENT.length;  
  42.   
  43.         public TabFragmentAdapter(FragmentManager fm) {  
  44.             super(fm);  
  45.         }  
  46.   
  47.         @Override  
  48.         public Fragment getItem(int position) {  
  49.             return TabFragment.newInstance(String.valueOf(position));   
  50.         }  
  51.   
  52.         @Override  
  53.         public int getCount() {  
  54.             return mCount;  
  55.         }  
  56.           
  57.         @Override  
  58.         public CharSequence getPageTitle(int position) {  
  59.             return CONTENT[position];  
  60.         }  
  61.     }  
  62.   
  63. }  

 使用Fragment方便管理tab页,viewpagerindicator使用场景非常常见,在很多应用的重新安装的开始引导页中也可以用到。具体实例在Viewpageridicator的Github的samplelist中有详细介绍。请关注 @陈华blogist  微博,有 使用问题微博交流,其实下面有详细的代码,上图是实际运行效果。并在产品中已经使用。

 

  • 大小: 23.3 KB
  • 大小: 95.2 KB

0 0
原创粉丝点击