package com.lfk.justweengine.drawable.Button;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.renderscript.Float2;
import com.lfk.justweengine.engine.Engine;
import com.lfk.justweengine.utils.tools.DisplayUtils;
/**
* TextButton
*
* @author liufengkai
* Created by liufengkai on 15/12/12.
*/
public class TextButton extends BaseButton {
// text color / button color
private int b_text_Color, b_button_Color;
// text
private String b_text;
// zoom in center
private boolean b_zoomCenter, b_firstInit;
private Paint b_textPaint;
private float b_textWidth, b_singleWidth;
/**
* TextButton
*
* @param b_engine engine context
* @param name textButton name
*/
public TextButton(Engine b_engine, String name) {
super(b_engine, name);
init();
}
/**
* TextButton
*
* @param b_engine engine context
* @param b_width w
* @param b_height h
* @param name textButton name
*/
public TextButton(Engine b_engine, int b_width, int b_height, String name) {
super(b_engine, b_width, b_height, name);
init();
}
private void init() {
b_text = "";
b_text_Color = Color.WHITE;
b_button_Color = Color.TRANSPARENT;
b_zoomCenter = false;
b_firstInit = false;
b_position = new Point(110, 110);
b_scale = new Float2(1.0f, 1.0f);
b_textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
b_textPaint.setColor(b_text_Color);
b_textPaint.setTextSize(40);
paint.setColor(b_button_Color);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
}
@Override
public void draw() {
e_canvas = b_engine.getCanvas();
if (b_width == 0 || b_height == 0) {
float[] widths = new float[1];
// 获取单个汉字的宽度
b_textPaint.getTextWidths("蛤", widths);
b_text = b_text != null ? b_text : "";
b_textWidth = widths[0] * b_text.length();
b_singleWidth = widths[0];
b_width = (int) (b_text.length() * widths[0] + 2 * DisplayUtils.dip2px(16));
b_height = (int) (widths[0] + 2 * DisplayUtils.dip2px(8));
}
int x = b_position.x;
int y = b_position.y;
int w = (int) (b_width * b_scale.x);
int h = (int) (b_height * b_scale.y);
if (!b_firstInit) {
b_rect = new Rect(x, y, x + w, y + h);
b_firstInit = true;
}
if (!b_zoomCenter) {
b_rect = new Rect(x, y, x + w, y + h);
}
e_canvas.drawRect(b_rect, paint);
e_canvas.drawText(b_text, x + (b_width / 2 - b_textWidth / 2),
y + (b_height / 2 + b_singleWidth / 2), b_textPaint);
}
@Override
public void animation() {
if (b_baseAnim != null && b_baseAnim.animating) {
doAnimation();
}
}
private void doAnimation() {
switch (b_baseAnim.animType) {
case COLOR:
paint.setColor(b_baseAnim.adjustButtonBackGround(b_button_Color, b_normal));
break;
}
}
public void setZoomCenter(boolean zoomCenter) {
this.b_zoomCenter = zoomCenter;
}
public void setTextColor(int text_Color) {
if (b_textPaint != null) b_textPaint.setColor(text_Color);
this.b_text_Color = text_Color;
}
public void setButtonColor(int button_Color) {
this.b_button_Color = button_Color;
this.paint.setColor(button_Color);
}
@Override
public void setNormal(boolean b_normal) {
if (b_baseAnim != null) {
this.b_baseAnim.animating = true;
this.b_normal = b_normal;
}
}
public void setAnimation(BaseButtonAnimation anim) {
this.b_baseAnim = anim;
}
@Override
public void setText(String b_text) {
this.b_text = b_text;
}
public void setPosition(int x, int y) {
this.b_position.x = x;
this.b_position.y = y;
}
}