package com.example.administrator.cookman.ui.component.magicindicator.buildins.commonnavigator.titles;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.example.administrator.cookman.ui.component.magicindicator.buildins.commonnavigator.abs.IMeasurablePagerTitleView;
/**
* 通用的指示器标题,子元素内容由外部提供,事件回传给外部
* 博客: http://hackware.lucode.net
* Created by hackware on 2016/7/3.
*/
public class CommonPagerTitleView extends FrameLayout implements IMeasurablePagerTitleView {
private OnPagerTitleChangeListener mOnPagerTitleChangeListener;
private ContentPositionDataProvider mContentPositionDataProvider;
public CommonPagerTitleView(Context context) {
super(context);
}
@Override
public void onSelected(int index, int totalCount) {
if (mOnPagerTitleChangeListener != null) {
mOnPagerTitleChangeListener.onSelected(index, totalCount);
}
}
@Override
public void onDeselected(int index, int totalCount) {
if (mOnPagerTitleChangeListener != null) {
mOnPagerTitleChangeListener.onDeselected(index, totalCount);
}
}
@Override
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
if (mOnPagerTitleChangeListener != null) {
mOnPagerTitleChangeListener.onLeave(index, totalCount, leavePercent, leftToRight);
}
}
@Override
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
if (mOnPagerTitleChangeListener != null) {
mOnPagerTitleChangeListener.onEnter(index, totalCount, enterPercent, leftToRight);
}
}
@Override
public int getContentLeft() {
if (mContentPositionDataProvider != null) {
return mContentPositionDataProvider.getContentLeft();
}
return getLeft();
}
@Override
public int getContentTop() {
if (mContentPositionDataProvider != null) {
return mContentPositionDataProvider.getContentTop();
}
return getTop();
}
@Override
public int getContentRight() {
if (mContentPositionDataProvider != null) {
return mContentPositionDataProvider.getContentRight();
}
return getRight();
}
@Override
public int getContentBottom() {
if (mContentPositionDataProvider != null) {
return mContentPositionDataProvider.getContentBottom();
}
return getBottom();
}
/**
* 外部直接将布局设置进来
*
* @param contentView
*/
public void setContentView(View contentView) {
setContentView(contentView, null);
}
public void setContentView(View contentView, LayoutParams lp) {
removeAllViews();
if (contentView != null) {
if (lp == null) {
lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
addView(contentView, lp);
}
}
public void setContentView(int layoutId) {
View child = LayoutInflater.from(getContext()).inflate(layoutId, null);
setContentView(child, null);
}
public OnPagerTitleChangeListener getOnPagerTitleChangeListener() {
return mOnPagerTitleChangeListener;
}
public void setOnPagerTitleChangeListener(OnPagerTitleChangeListener onPagerTitleChangeListener) {
mOnPagerTitleChangeListener = onPagerTitleChangeListener;
}
public ContentPositionDataProvider getContentPositionDataProvider() {
return mContentPositionDataProvider;
}
public void setContentPositionDataProvider(ContentPositionDataProvider contentPositionDataProvider) {
mContentPositionDataProvider = contentPositionDataProvider;
}
public interface OnPagerTitleChangeListener {
void onSelected(int index, int totalCount);
void onDeselected(int index, int totalCount);
void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight);
void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight);
}
public interface ContentPositionDataProvider {
int getContentLeft();
int getContentTop();
int getContentRight();
int getContentBottom();
}
}