package sj.keyboard.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.keyboard.view.R;
import java.util.ArrayList;
import sj.keyboard.data.PageSetEntity;
import sj.keyboard.utils.EmoticonsKeyboardUtils;
public class EmoticonsIndicatorView extends LinearLayout {
private static final int MARGIN_LEFT = 4;
protected Context mContext;
protected ArrayList<ImageView> mImageViews;
protected Drawable mDrawableSelect;
protected Drawable mDrawableNomal;
protected LayoutParams mLeftLayoutParams;
public EmoticonsIndicatorView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
this.setOrientation(HORIZONTAL);
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.EmoticonsIndicatorView, 0, 0);
try {
mDrawableSelect = a.getDrawable(R.styleable.EmoticonsIndicatorView_bmpSelect);
mDrawableNomal = a.getDrawable(R.styleable.EmoticonsIndicatorView_bmpNomal);
} finally {
a.recycle();
}
if(mDrawableNomal == null) {
mDrawableNomal = getResources().getDrawable(R.drawable.indicator_point_nomal);
}
if(mDrawableSelect == null) {
mDrawableSelect = getResources().getDrawable(R.drawable.indicator_point_select);
}
mLeftLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mLeftLayoutParams.leftMargin = EmoticonsKeyboardUtils.dip2px(context, MARGIN_LEFT);
}
public void playTo(int position, PageSetEntity pageSetEntity) {
if (!checkPageSetEntity(pageSetEntity)) {
return;
}
updateIndicatorCount(pageSetEntity.getPageCount());
for (ImageView iv : mImageViews) {
iv.setImageDrawable(mDrawableNomal);
}
mImageViews.get(position).setImageDrawable(mDrawableSelect);
}
public void playBy(int startPosition, int nextPosition, PageSetEntity pageSetEntity) {
if (!checkPageSetEntity(pageSetEntity)) {
return;
}
updateIndicatorCount(pageSetEntity.getPageCount());
if (startPosition < 0 || nextPosition < 0 || nextPosition == startPosition) {
startPosition = nextPosition = 0;
}
if (startPosition < 0) {
startPosition = nextPosition = 0;
}
final ImageView imageViewStrat = mImageViews.get(startPosition);
final ImageView imageViewNext = mImageViews.get(nextPosition);
imageViewStrat.setImageDrawable(mDrawableNomal);
imageViewNext.setImageDrawable(mDrawableSelect);
}
protected boolean checkPageSetEntity(PageSetEntity pageSetEntity) {
if (pageSetEntity != null && pageSetEntity.isShowIndicator()) {
setVisibility(VISIBLE);
return true;
} else {
setVisibility(GONE);
return false;
}
}
protected void updateIndicatorCount(int count) {
if (mImageViews == null) {
mImageViews = new ArrayList<>();
}
if (count > mImageViews.size()) {
for (int i = mImageViews.size(); i < count; i++) {
ImageView imageView = new ImageView(mContext);
imageView.setImageDrawable(i == 0 ? mDrawableSelect : mDrawableNomal);
this.addView(imageView, mLeftLayoutParams);
mImageViews.add(imageView);
}
}
for (int i = 0; i < mImageViews.size(); i++) {
if (i >= count) {
mImageViews.get(i).setVisibility(GONE);
} else {
mImageViews.get(i).setVisibility(VISIBLE);
}
}
}
}