package com.hua.goddess.fragment.lunbo;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import com.hua.goddess.R;
public class ViewPagerFocusView extends View{
private int count; //圆点的总数量
private int currentIndex = 0; //当前焦点的位置从0开始
private int interval = 15; //圆点与圆点之间的间隔
private Bitmap losesFocus; //没有获得焦点的圆点
private Bitmap getFocus; //获得焦点的圆点
private Paint paint;
private String title = ""; //标题
private int textPaddingTop = 20;
private int textPaddingFont; // 文字间距
private Context context;
private int paddingLeftSize;
private int paddingRightSize;
public ViewPagerFocusView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = context;
initPaddingSize();
}
public ViewPagerFocusView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
initPaddingSize();
}
public ViewPagerFocusView(Context context) {
super(context);
this.context = context;
initPaddingSize();
}
private void initPaddingSize(){
paddingLeftSize = context.getResources().getDimensionPixelSize(R.dimen.viewpager_focusview_paddingleft_size);
paddingRightSize = context.getResources().getDimensionPixelSize(R.dimen.viewpager_focusview_paddingright_size);
textPaddingFont = context.getResources().getDimensionPixelSize(R.dimen.viewpager_focusview_text_padding_font);
}
/**
* 图片的最多数量
* @param count
*/
public void setCount(int count){
this.count = count;
if(count >= 0){
losesFocus = BitmapFactory.decodeResource(getResources(), R.drawable.page_indicator);
getFocus = BitmapFactory.decodeResource(getResources(), R.drawable.page_indicator_focused);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.WHITE);
// paint.setTextAlign(Align.CENTER);
paint.setTextAlign(Align.LEFT);
paint.setTextSize((int)context.getResources().getDimensionPixelSize(R.dimen.lunbo_fontsize));
}
}
public void setCurrentIndex(int currentIndex){
this.currentIndex = currentIndex;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawRound(canvas);
}
/**
* 设置标题
* @param title
*/
public void setTitle(String title){
this.title = title;
}
private String getText(int width){
Rect rect = new Rect();
//返回包围整个字符串的最小的一个Rect区域
paint.getTextBounds("中", 0, 1, rect); //测量一个中文字体的宽度
int maxLength = width/(rect.width()+2);
textPaddingTop = (getHeight() - rect.height())/2 + rect.height();
if(!"".equals(title) && title.length() > maxLength){
return title.substring(0, maxLength-2);
}else{
return title;
}
}
private void drawRound(Canvas canvas) {
if(losesFocus == null)return;
int height = getHeight();
int ratioPaddingTop = height/2 - losesFocus.getHeight() /2;
int start = (getWidth() - (count+1)*interval - losesFocus.getWidth()*count - paddingRightSize);//居右时的起始坐标
// int focusWidth = (count+1)*interval + losesFocus.getWidth()*count;//所有小点,加间隙的总长度
// int start = getWidth()/2 - focusWidth/2;//居中时起始坐标
for (int i = 0; i < count; i++) {
int left = (start+ i*interval+interval + i*losesFocus.getWidth());
if(i == 0 && !isEmpty(title)){
canvas.drawText(getText(left-textPaddingFont*2), paddingLeftSize, textPaddingTop, paint);
}
if(i == currentIndex){
canvas.drawBitmap(getFocus, left, ratioPaddingTop, paint);
}else{
canvas.drawBitmap(losesFocus, left, ratioPaddingTop, paint);
}
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measuredHeight = 30+(losesFocus!=null?losesFocus.getWidth():0);
setMeasuredDimension(widthMeasureSpec, measuredHeight);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private boolean isEmpty(String url) {
if (url == null || "".equals(url) || "null".equals(url)) {
return true;
}
return false;
}
}