国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 中 viewpager 滑動(dòng)指示器的實(shí)例代碼

2019-10-22 18:20:52
字體:
供稿:網(wǎng)友

先看下效果圖:

viewpager,滑動(dòng)指示器,android

這個(gè)需要用到1個(gè)開源的 庫,這個(gè)后面也會(huì)說下的。

viewpager,滑動(dòng)指示器,android

工程目錄:

viewpager,滑動(dòng)指示器,android

1. MainActivity.java

public class MainActivity extends FragmentActivity {   private ViewPagerFrameAdapter adapter;  //適配器(標(biāo)題和內(nèi)容)  private ViewPager mPager;         private TabPageIndicator   tabbPageIndicator;   //  private UnderlinePageIndicatorEx underlinePageIndicator;  private int COUNT = 0;  private List<String> titles = new ArrayList<String>(); //標(biāo)題  @Override  protected void onCreate(Bundle bundle) {     super.onCreate(bundle);     requestWindowFeature(Window.FEATURE_NO_TITLE);     setContentView(R.layout.activity_main);     //標(biāo)題,這里自己造的假數(shù)據(jù)     for (int j = 0; j < 3 ; j++){      titles.add( "第"+ j +"標(biāo)簽卡");     }     mPager = (ViewPager)findViewById(R.id.pager);     adapter = new ViewPagerFrameAdapter(getSupportFragmentManager(),titles);     mPager.setAdapter(adapter);     //得到指示器     tabbPageIndicator = (TabPageIndicator) findViewById(R.id.tab_indicator);      tabbPageIndicator.setViewPager(mPager);     //下標(biāo)     underlinePageIndicator = (UnderlinePageIndicatorEx)findViewById(R.id.underline_indicator);     underlinePageIndicator.setViewPager(mPager);     underlinePageIndicator.setFades(false);     //設(shè)置指示器     tabbPageIndicator.setOnPageChangeListener(underlinePageIndicator);  }  //adapter 沒啥好說的 跟前面的一樣  private class ViewPagerFrameAdapter extends FragmentStatePagerAdapter{   private List<String> title; //頁面標(biāo)題頭部數(shù)據(jù)   public ViewPagerFrameAdapter(FragmentManager fm, List<String> title) {    super(fm);    this.title = title;   }   //根據(jù)position 返回 fragment   @Override   public Fragment getItem(int position) {    return ArrayFragment.newInstance(position);   }   //size   @Override   public int getCount() {     return title.size();   }   //頂部的title   @Override   public CharSequence getPageTitle(int position) {    if (titles != null){     return titles.get(position).toString();    }    return super.getPageTitle(position);   }   } } 

UnderlinePageIndicatorEx.java

//繼承這個(gè)然后重寫 public class UnderlinePageIndicatorEx extends UnderlinePageIndicator{   public UnderlinePageIndicatorEx(Context context) {    super(context, null);     }   public UnderlinePageIndicatorEx(Context context, AttributeSet attrs) {    super(context, attrs, R.attr.vpiUnderlinePageIndicatorStyle);    }   public UnderlinePageIndicatorEx(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);     }   //自身的 ViewPage傳遞過去   @Override   public void setViewPager(ViewPager viewPager) {    if (mViewPager == viewPager){     return;    } //   if (mViewPager != null) { //    mViewPager.setOnPageChangeListener(null); //   }    if (viewPager.getAdapter() == null) {     throw new IllegalStateException(" pager 沒有 加入 adapter");    }    mViewPager = viewPager; //   mViewPager.setOnPageChangeListener(this);    invalidate();    post(new Runnable(){     @Override public void run() {      if (mFades) {       post(mFadeRunnable);      }     }     });   } } 

ArrayFragment.java

public class ArrayFragment extends Fragment{  private int position;  public ArrayFragment(int position){   this.position = position;  }   // 返回 viwePager 下面滑動(dòng)的頁面  public static ArrayFragment newInstance(int position){   return new ArrayFragment(position);  }  @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);  }  @Override  public void onDestroy() {   super.onDestroy();  }  // 根據(jù)position 返回不同的view  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,    Bundle savedInstanceState) {   View view = inflater.inflate(R.layout.layoutaa, null);    return view;  } } 

好了接下來是 布局xml了。

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:orientation="vertical"   >  <!-- 標(biāo)題  和  標(biāo)題下面的 指示器 -->   <LinearLayout   android:layout_width="fill_parent"   android:layout_height="35dp"   android:orientation="vertical"   android:background="@drawable/main_header_background">     <com.viewpagerindicator.TabPageIndicator      android:id="@+id/tab_indicator"      android:layout_height="wrap_content"      android:layout_width="fill_parent"/>     <com.test.linepagerindictor.widget.UnderlinePageIndicatorEx      android:id="@+id/underline_indicator"      android:layout_height="3dip"      android:layout_width="fill_parent"      android:layout_alignParentBottom="true"/>   </LinearLayout>    <android.support.v4.view.ViewPager   android:id="@+id/pager"   android:layout_width="fill_parent"   android:layout_height="fill_parent"/>  </LinearLayout> 

接下來設(shè)置 滑動(dòng)指示器的style 

<!-- 總 style 直接引用 這個(gè) 由 tab style 和 Indicator style 組成 -->  <style name="StyledAllIndicators" parent="@android:style/Theme.Light">   <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>   <item name="vpiUnderlinePageIndicatorStyle">@style/CustomUnderlinePageIndicator</item>  </style>  <!-- tab的 style -->  <style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">   <item name="android:background">#00000000</item>   <item name="android:textAppearance">@style/CustomTabPageIndicator_text</item>   <item name="android:textColor">@color/selector_tab</item>   <item name="android:textSize">20sp</item>   <!-- 分割線,可有可無的 -->   <item name="android:divider">@drawable/custom_tab_indicator_divider</item>   <item name="android:dividerPadding">10dip</item>   <item name="android:showDividers">middle</item>   <item name="android:paddingTop">4dp</item>   <item name="android:paddingLeft">8dp</item>   <item name="android:paddingBottom">4dp</item>   <item name="android:paddingRight">8dp</item>   <item name="android:fadingEdge">horizontal</item>   <item name="android:fadingEdgeLength">8dp</item>  </style>  <style name="CustomTabPageIndicator_text" parent="android:TextAppearance.Medium">   <item name="android:typeface">monospace</item>  </style>  <!-- 下標(biāo)的指示器的顏色 -->  <style name="CustomUnderlinePageIndicator">   <item name="selectedColor">#EB5548</item>   <item name="android:background">#00000000</item>   <item name="fadeLength">1000</item>   <item name="fadeDelay">1000</item>  </style> 

 selector_tab.xml     這個(gè)是 選擇器 在style中引用的,是用來切換 被選中的背景色的

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">  <item android:state_selected="true" android:color="#91D228" />  <item android:state_focused="true" android:color="#91D228" />  <item android:color="#dddddd" /> </selector> 


注:相關(guān)教程知識(shí)閱讀請移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武陟县| 蕉岭县| 衡阳县| 阿拉善左旗| 永清县| 白河县| 西宁市| 安溪县| 银川市| 江永县| 安岳县| 梅河口市| 丰都县| 岗巴县| 牡丹江市| 海丰县| 闽清县| 福清市| 大田县| 乌兰浩特市| 岐山县| 云浮市| 大姚县| 晋城| 北川| 镇巴县| 西昌市| 理塘县| 罗源县| 怀来县| 聂拉木县| 长沙县| 泰宁县| 麻阳| 泸溪县| 河西区| 玛沁县| 修文县| 和平县| 南汇区| 治多县|