Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android 中 viewpager 滑动指示器的实例代码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

先看下效果图:@H_616_1@

Android 中 viewpager 滑动指示器的实例代码@H_616_1@@H_616_1@@H_616_1@

这个需要用1个开源的 库,这个后面也会说下的。@H_616_1@

Android 中 viewpager 滑动指示器的实例代码@H_616_1@@H_616_1@@H_616_1@

工程目录:@H_616_1@

Android 中 viewpager 滑动指示器的实例代码@H_616_1@@H_616_1@@H_616_1@

1. MainActivity.java@H_616_1@

public class MainActivity extends FragmentActivity { 
  private ViewPagerFrameAdapter adapter;  //适配器(标题内容) 
 private ViewPager mPager;        
 private TabPageInDicator   tabbPageInDicator;   // 
 private UnderlinePageInDicatorEx underlinePageInDicator; 
 private int count = 0; 
 private List<String> titles = new ArrayList<String>(); //标题 
 @Override 
 protected void onCreate(Bundle bundlE) { 
    super.onCreate(bundlE); 
    requestWindowFeature(Window.FEATURE_NO_titlE); 
    setContentView(R.layout.activity_main); 
    //标题,这里自己造的假数据 
    for (int j = 0; j < 3 ; j++){ 
     titles.add( "第"+ j +"标签卡"); 
    } 
    mPager = (ViewPager)findViewById(R.id.pager); 
    adapter = new ViewPagerFrameAdapter(getSupportFragmentManager(),titles); 
    mPager.setAdapter(adapter); 
    //得到指示器 
    tabbPageInDicator = (TabPageInDicator) findViewById(R.id.tab_inDicator);  
    tabbPageInDicator.setViewPager(mPager); 
    //下标 
    underlinePageInDicator = (UnderlinePageInDicatorEX)findViewById(R.id.underline_inDicator); 
    underlinePageInDicator.setViewPager(mPager); 
    underlinePageInDicator.setFades(false); 
    //设置指示器 
    tabbPageInDicator.setOnPagechangelistener(underlinePageInDicator); 
 } 
 //adapter 没啥好说的 跟前面的一样 
 private class ViewPagerFrameAdapter extends FragmentStatePagerAdapter{ 
  private List<String> title; //页面标题头部数据 
  public ViewPagerFrameAdapter(FragmentManager fm,List<String> titlE) { 
   super(fm); 
   this.title = title; 
  } 
  //根据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@H_616_1@

//继承这个然后重写 
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,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@H_616_1@

public class ArrayFragment extends Fragment{ 
 private int position; 
 public ArrayFragment(int position){ 
  this.position = position; 
 } 
  // 返回 viwePager 下面滑动的页面 
 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(); 
 } 
 // 根据position 返回不同的view 
 @Override 
 public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceStatE) { 
  View view = inflater.inflate(R.layout.layoutaa,null);  
  return view; 
 } 
} 

好了接下来是 布局xml了。@H_616_1@

<LinearLayout 
  xmlns:android="http://scheR_335_11845@as.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:orientation="vertical" 
  > 
 <!-- 标题标题下面的 指示器 --> 
  <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> 

接下来设置 滑动指示器的style @H_616_1@

<!-- 总 style 直接引用 这个 由 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> 
 <!-- 下标的指示器的颜色 --> 
 <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     这个是 选择器 在style中引用的,是用来切换 被选中的背景色的@H_616_1@

<?xml version="1.0" encoding="utf-8"?> 
<SELEctor xmlns:android="http://scheR_335_11845@as.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> 

大佬总结

以上是大佬教程为你收集整理的Android 中 viewpager 滑动指示器的实例代码全部内容,希望文章能够帮你解决Android 中 viewpager 滑动指示器的实例代码所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。