Android仿今日头条滑动页面导航效果

家电修理 2023-07-16 19:16www.caominkang.com电器维修

最近项目中用到了滑动页面,也就是和目前市场上很火的"今日头条"页面滑动类似,在网上找了一下,大部分都是用ViePager来实现的,刚开始我用的是ViePager+VieGroup,上面的标题按钮用的是HorizontalScrollVie,写完之后感觉效果比较生硬,果断换掉,发现了一个效果比较好的第三方,也就是今天的主题:PagerSlidingTabStrip.好了,下面来具体介绍一下PagerSlidingTabStrip,进行一下源码解析.

一、看一下demo的样子吧

二、把PagerSlidingTabStrip导入我们的项目中

然后在我们的布局文件中进行声明:

 
 
 
 <.hankkin.PagerSlidingTabStrip.vie.PagerSlidingTabStrip 
 android:id="@+id/tab" 
 app:pstsShouldExpand="false" 
 app:pstsUnderlineHeight="2dp" 
 app:pstsIndicatorHeight="2dp" 
 app:pstsIndicatorColor="@android:color/holo_blue_light" 
 app:selectedTabTextColor="@android:color/holo_blue_light" 
 app:pstsDividerColor="@android:color/transparent" 
 app:pstsTabBackground="@draable/background" 
 android:background="@android:color/hite" 
 android:layout_idth="match_parent" 
 android:layout_height="55dp"/> 
 
  
 
 
 

上面的也就是我们的标题滑动按钮,下面的ViePager用来存放我们的内容

三、创建Adapter

package .hankkin.PagerSlidingTabStrip.adapter; 
 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import .hankkin.PagerSlidingTabStrip.fragment.AndroidFragment; 
import .hankkin.PagerSlidingTabStrip.fragment.JavaFragment; 
import .hankkin.PagerSlidingTabStrip.fragment.ObjectCFragment; 
 
import java.util.List; 
 
public class MyAdapter extends FragmentPagerAdapter { 
 private AndroidFragment androidFragment; 
 private JavaFragment javaFragment; 
 private ObjectCFragment objectCFragment; 
 private String[] titles; 
 public MyAdapter(FragmentManager fm,String[] titles) { 
 super(fm); 
 this.titles = titles; 
 } 
 
 @Override 
 public Fragment getItem(int position) { 
 sitch (position) { 
 case 0: 
 if (androidFragment == null) { 
  androidFragment = ne AndroidFragment(); 
 } 
 return androidFragment; 
 case 1: 
 if (javaFragment == null) { 
  javaFragment = ne JavaFragment(); 
 } 
 return javaFragment; 
 case 2: 
 if (objectCFragment == null) { 
  objectCFragment = ne ObjectCFragment(); 
 } 
 return objectCFragment; 
 default: 
 return null; 
 } 
 } 
 
 @Override 
 public int getCount() { 
 return titles.length; 
 } 
 
 public String getPageTitle(int i){ 
 return titles[i]; 
 } 
 
} 
 

我这里用的是碎片Fragment,最下面的getPageTitle()是我们的PagerSlidingTabStrip中的方法,用来获取标题
接下来我们初始化PagerSlidingTabStrip和ViePager还有我们的碎片

 private void initVies(){ 
 fragments = ne ArrayList<>(); 
 pagerTab = (PagerSlidingTabStrip) findVieById(R.id.tab); 
 pager = (ViePager) findVieById(R.id.pager); 
 
 for (int i=0;i

在Adapter中利用碎片管理器获取我们的碎片和标题相对应上.这里面需要注意提一下,如果碎片的个数比较少我们可以手动创建碎片,如果像今日头条很多的话也没关系,动态创建Fragment,因为我们可以看到头条的每个碎片中的内容都是类似的,所以说动态创建也未尝不可,只有个别特殊的我们也可以特殊处理。

就这么简单就可以实现类似头条的页面滑动效果,

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by