图
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".order.MyOrderActivity">
<com.shizhefei.view.indicator.FixedIndicatorView
android:id="@+id/fixedIndicatorView"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/background" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/d0.5"
android:background="@color/cutOffRule" />
<com.shizhefei.view.viewpager.SViewPager
android:id="@+id/sViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/background" />
</LinearLayout>
主代码
package com.self.zsp.mutualhelp.order;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.self.zsp.mutualhelp.R;
import com.shizhefei.view.indicator.FixedIndicatorView;
import com.shizhefei.view.indicator.IndicatorViewPager;
import com.shizhefei.view.indicator.slidebar.TextWidthColorBar;
import com.shizhefei.view.indicator.transition.OnTransitionTextListener;
import com.shizhefei.view.viewpager.SViewPager;
import base.BaseActivity;
import fragment.order.OrderAlreadyAchieveFragment;
import fragment.order.OrderOverdueFragment;
import fragment.order.OrderUnderWayFragment;
import value.Magic;
/**
* @decs: 我的下单
* @date: 2018/5/4 10:42
* @version: v 1.0
*/
public class MyOrderActivity extends BaseActivity {
/**
* 控件
*/
private SViewPager sViewPager;
private FixedIndicatorView fixedIndicatorView;
private IndicatorViewPager indicatorViewPager;
@Override
protected void initContentView(Bundle savedInstanceState) {
setContentView(R.layout.activity_my_order);
}
@Override
protected void stepUI() {
sViewPager = findViewById(R.id.sViewPager);
fixedIndicatorView = findViewById(R.id.fixedIndicatorView);
}
@Override
protected void initConfiguration() {
setIndicator();
}
@Override
protected void initData() {
}
@Override
protected void startLogic() {
}
@Override
protected void setListener() {
}
private void setIndicator() {
// 指示器
fixedIndicatorView.setOnTransitionListener(new OnTransitionTextListener().setValueFromRes(this,
R.color.colorPrimary, R.color.fontHint,
R.dimen.s15, R.dimen.s13));
// 指示器下边缘
/*fixedIndicatorView.setScrollBar(new ColorBar(this, Color.RED, 10, ScrollBar.Gravity.BOTTOM_FLOAT));*/
// ViewPager禁滑
sViewPager.setCanScroll(true);
// ViewPager保留界面不重加载页数
sViewPager.setOffscreenPageLimit(3);
indicatorViewPager = new IndicatorViewPager(fixedIndicatorView, sViewPager);
indicatorViewPager.setIndicatorScrollBar(new TextWidthColorBar(this,
fixedIndicatorView, ContextCompat.getColor(this, R.color.colorPrimary), 10));
indicatorViewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
}
private class MyAdapter extends IndicatorViewPager.IndicatorFragmentPagerAdapter {
private String[] tabTitles = {getString(R.string.underWay), getString(R.string.alreadyAchieve), getString(R.string.overdue)};
private LayoutInflater inflater;
/**
* 构造方法
*
* @param fragmentManager
*/
public MyAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
inflater = LayoutInflater.from(getApplicationContext());
}
@Override
public int getCount() {
return tabTitles.length;
}
@Override
public View getViewForTab(int position, View convertView, ViewGroup container) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.tab_main, container, false);
}
TextView textView = (TextView) convertView;
textView.setText(tabTitles[position]);
return textView;
}
@Override
public Fragment getFragmentForPage(int position) {
Fragment fragment = null;
if (position == 0) {
fragment = new OrderUnderWayFragment();
} else if (position == 1) {
fragment = new OrderAlreadyAchieveFragment();
} else if (position == Magic.INT_ER) {
fragment = new OrderOverdueFragment();
}
return fragment;
}
}
}
图文
主布局
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".subject.MainActivity">
<com.shizhefei.view.viewpager.SViewPager
android:id="@+id/sViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/d0.5"
android:background="@color/cutOffRule" />
<com.shizhefei.view.indicator.FixedIndicatorView
android:id="@+id/fixedIndicatorView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background"
android:paddingBottom="@dimen/d3"
android:paddingTop="@dimen/d6" />
</LinearLayout>
tab 布局
tab_main
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:textSize="@dimen/s10" />
主代码
package com.self.zsp.mutualhelp.subject;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.self.zsp.mutualhelp.R;
import com.shizhefei.view.indicator.FixedIndicatorView;
import com.shizhefei.view.indicator.IndicatorViewPager;
import com.shizhefei.view.indicator.transition.OnTransitionTextListener;
import com.shizhefei.view.viewpager.SViewPager;
import base.BaseActivity;
import fragment.subject.SubjectActiveFragment;
import fragment.subject.SubjectHelpFragment;
import fragment.subject.SubjectHomeFragment;
import fragment.subject.SubjectNewsFragment;
import fragment.subject.SubjectPersonalFragment;
import joggle.TouchListener;
import value.Magic;
/**
* @decs: 主页
* @date: 2018/3/27 11:29
* @version: v 1.0
*/
public class MainActivity extends BaseActivity {
/**
* 控件
*/
private SViewPager sViewPager;
private FixedIndicatorView fixedIndicatorView;
private IndicatorViewPager indicatorViewPager;
@Override
protected void initContentView(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
}
@Override
protected void stepUI() {
sViewPager = findViewById(R.id.sViewPager);
fixedIndicatorView = findViewById(R.id.fixedIndicatorView);
}
@Override
protected void initConfiguration() {
setIndicator();
}
@Override
protected void initData() {
}
@Override
protected void startLogic() {
}
@Override
protected void setListener() {
}
private void setIndicator() {
// 指示器
fixedIndicatorView.setOnTransitionListener(new OnTransitionTextListener().setColorId(MainActivity.this, R.color.colorPrimary, R.color.fontHint));
// ViewPager滑
sViewPager.setCanScroll(false);
// ViewPager保留界面不重加载页面数
sViewPager.setOffscreenPageLimit(5);
indicatorViewPager = new IndicatorViewPager(fixedIndicatorView, sViewPager);
indicatorViewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
}
private class MyAdapter extends IndicatorViewPager.IndicatorFragmentPagerAdapter {
private String[] tabTitles = {getString(R.string.home),
getString(R.string.active),
getString(R.string.news),
getString(R.string.help),
getString(R.string.personal)};
private int[] tabIcons = {R.drawable.home_tab_selector,
R.drawable.active_tab_selector,
R.drawable.news_tab_selector,
R.drawable.help_tab_selector,
R.drawable.personal_tab_selector};
private LayoutInflater inflater;
/**
* 构造方法
*
* @param fragmentManager
*/
public MyAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
inflater = LayoutInflater.from(getApplicationContext());
}
@Override
public int getCount() {
return tabTitles.length;
}
@Override
public View getViewForTab(int position, View convertView, ViewGroup container) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.tab_main, container, false);
}
TextView textView = (TextView) convertView;
textView.setText(tabTitles[position]);
// 布局 / 代码均可设文本大小
// 固宽可避 TextView 大小或 Tab 宽变致 Tab 抖动
/*textView.setTextSize(13);*/
textView.setCompoundDrawablesWithIntrinsicBounds(0, tabIcons[position], 0, 0);
return textView;
}
@Override
public Fragment getFragmentForPage(int position) {
Fragment fragment = null;
if (position == 0) {
fragment = new SubjectHomeFragment();
} else if (position == 1) {
fragment = new SubjectActiveFragment();
} else if (position == Magic.INT_ER) {
fragment = new SubjectNewsFragment();
} else if (position == Magic.INT_S) {
fragment = new SubjectHelpFragment();
} else if (position == Magic.INT_SI) {
fragment = new SubjectPersonalFragment();
}
return fragment;
}
}
}