几行代码实现tab+fragment+viewpager---还有酷炫的动画效果哦

运行效果:
运行效果图

核心代码展示:

 private void init() {
        ViewGroup tab = (ViewGroup) findViewById(R.id.tab);
        tab.addView(LayoutInflater.from(this).inflate(R.layout.demo_distribute_evenly, tab, false));
        ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
        SmartTabLayout viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab);
        FragmentPagerItems pages = new FragmentPagerItems(this);
        pages.add(FragmentPagerItem.of("热门课程", DemoFragment.class));
        pages.add(FragmentPagerItem.of("志愿讲堂", DemoFragment.class));
        pages.add(FragmentPagerItem.of("专家解读", DemoFragment.class));
        pages.add(FragmentPagerItem.of("大学展播", DemoFragment.class));
        FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter(
                getSupportFragmentManager(), pages);
        viewPager.setAdapter(adapter);
        viewPagerTab.setViewPager(viewPager);
    }
几行代码轻松实现tab+fragment+viewpager的效果,动画效果是不是很酷炫呢?

所用库:SmartTabLayout-master
下载地址:https://github.com/ogaclejapan/SmartTabLayout

自定义效果所需要的文件:
这里写图片描述

demo_distribute_evenly 代码展示
<com.ogaclejapan.smarttablayout.SmartTabLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@id/viewpagertab"
    android:layout_width="match_parent"
    android:layout_height="@dimen/tab_height"
    app:stl_defaultTabTextColor="@color/custom_tab"
    app:stl_distributeEvenly="true"
    app:stl_indicatorColor="#40C4FF"
    app:stl_indicatorCornerRadius="0dp"
    app:stl_indicatorInterpolation="smart"
    app:stl_indicatorThickness="3dp"
    app:stl_defaultTabTextSize="14dp"
    app:stl_dividerColor="#8040C4FF"
    app:stl_dividerThickness="1dp"
    />
更多的自定义设置留意库里面的attrs.xml文件

文件位置

attrs.xml 代码详情
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <declare-styleable name="stl_SmartTabLayout">
    <attr name="stl_indicatorAlwaysInCenter" format="boolean"/>
    <attr name="stl_indicatorWithoutPadding" format="boolean"/>
    <attr name="stl_indicatorInFront" format="boolean"/>
    <attr name="stl_indicatorInterpolation" format="enum">
      <enum name="smart" value="0"/>
      <enum name="linear" value="1"/>
    </attr>
    <attr name="stl_indicatorGravity" format="enum">
      <enum name="bottom" value="0"/>
      <enum name="top" value="1"/>
      <enum name="center" value="2"/>
    </attr>
    <attr name="stl_indicatorColor" format="color"/>
    <attr name="stl_indicatorColors" format="reference"/>
    <attr name="stl_indicatorThickness" format="dimension"/>
    <attr name="stl_indicatorWidth" format="dimension">
      <enum name="auto" value="-1"/>
    </attr>
    <attr name="stl_indicatorCornerRadius" format="dimension"/>
    <attr name="stl_overlineColor" format="color"/>
    <attr name="stl_overlineThickness" format="dimension"/>
    <attr name="stl_underlineColor" format="color"/>
    <attr name="stl_underlineThickness" format="dimension"/>
    <attr name="stl_dividerColor" format="color"/>
    <attr name="stl_dividerColors" format="reference"/>
    <attr name="stl_dividerThickness" format="dimension"/>
    <attr name="stl_defaultTabBackground" format="reference"/>
    <attr name="stl_defaultTabTextAllCaps" format="boolean"/>
    <attr name="stl_defaultTabTextColor" format="color|reference"/>
    <attr name="stl_defaultTabTextSize" format="dimension"/>
    <attr name="stl_defaultTabTextHorizontalPadding" format="dimension"/>
    <attr name="stl_defaultTabTextMinWidth" format="dimension"/>
    <attr name="stl_customTabTextLayoutId" format="reference"/>
    <attr name="stl_customTabTextViewId" format="reference"/>
    <attr name="stl_distributeEvenly" format="boolean"/>
    <attr name="stl_clickable" format="boolean"/>
    <attr name="stl_titleOffset" format="dimension">
      <enum name="auto_center" value="-1"/>
    </attr>
    <attr name="stl_drawDecorationAfterTab" format="boolean"/>
  </declare-styleable>
</resources>

效果图xml代码展示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:orientation="vertical"
    android:gravity="center_horizontal"
    android:background="@color/info_bj">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/title_height"
        android:background="@color/home_bag_color"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="@string/youxy_title_text"
            android:textColor="@color/text_color"
            android:textSize="20dp" />

        <ImageButton
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:background="@mipmap/main_back"
            android:onClick="back" />
    </RelativeLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        >
        <LinearLayout
            android:id="@+id/header"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            >
            <FrameLayout
                android:id="@id/tab"
                android:layout_width="match_parent"
                android:layout_height="@dimen/tab_height"
                android:background="@color/white"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:background="@color/info_bj"/>
        <android.support.v4.view.ViewPager
            android:id="@id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/header"
            />
    </LinearLayout>
</LinearLayout>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值