package com.fanxin.easeui.widget.emojicon;
import java.util.ArrayList;
import java.util.List;
import android.R.integer;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.hyphenate.easeui.R;
import com.hyphenate.util.DensityUtil;
@SuppressLint("NewApi")
public class EaseEmojiconIndicatorView extends LinearLayout{
private Context context;
private Bitmap selectedBitmap;
private Bitmap unselectedBitmap;
private List<ImageView> dotViews;
private int dotHeight = 12;
public EaseEmojiconIndicatorView(Context context, AttributeSet attrs, int defStyle) {
this(context, null);
}
public EaseEmojiconIndicatorView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public EaseEmojiconIndicatorView(Context context) {
this(context,null);
}
private void init(Context context, AttributeSet attrs){
this.context = context;
dotHeight = DensityUtil.dip2px(context, dotHeight);
selectedBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ease_dot_emojicon_selected);
unselectedBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ease_dot_emojicon_unselected);
setGravity(Gravity.CENTER_HORIZONTAL);
}
public void init(int count){
dotViews = new ArrayList<ImageView>();
for(int i = 0 ; i < count ; i++){
RelativeLayout rl = new RelativeLayout(context);
LayoutParams params = new LinearLayout.LayoutParams(dotHeight,dotHeight);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
ImageView imageView = new ImageView(context);
if(i == 0){
imageView.setImageBitmap(selectedBitmap);
rl.addView(imageView, layoutParams);
}
else{
imageView.setImageBitmap(unselectedBitmap);
rl.addView(imageView, layoutParams);
}
this.addView(rl, params);
dotViews.add(imageView);
}
}
public void updateIndicator(int count) {
if(dotViews == null){
return;
}
for(int i = 0 ; i < dotViews.size() ; i++){
if(i >= count){
dotViews.get(i).setVisibility(GONE);
((View)dotViews.get(i).getParent()).setVisibility(GONE);
}
else {
dotViews.get(i).setVisibility(VISIBLE);
((View)dotViews.get(i).getParent()).setVisibility(VISIBLE);
}
}
if(count > dotViews.size()){
int diff = count - dotViews.size();
for(int i = 0 ; i < diff ; i++){
RelativeLayout rl = new RelativeLayout(context);
LayoutParams params = new LinearLayout.LayoutParams(dotHeight,dotHeight);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
ImageView imageView = new ImageView(context);
imageView.setImageBitmap(unselectedBitmap);
rl.addView(imageView, layoutParams);
rl.setVisibility(View.GONE);
imageView.setVisibility(View.GONE);
this.addView(rl, params);
dotViews.add(imageView);
}
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if(selectedBitmap != null){
selectedBitmap.recycle();
}
if(unselectedBitmap != null){
unselectedBitmap.recycle();
}
}
public void selectTo(int position){
for(ImageView iv : dotViews){
iv.setImageBitmap(unselectedBitmap);
}
dotViews.get(position).setImageBitmap(selectedBitmap);
}
public void selectTo(int startPosition, int targetPostion){
ImageView startView = dotViews.get(startPosition);
ImageView targetView = dotViews.get(targetPostion);
startView.setImageBitmap(unselectedBitmap);
targetView.setImageBitmap(selectedBitmap);
}
}