package com.middleware.dialog;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.taobao.middleware.R;
public class ButtonFlat extends Button {
TextView textButton;
public ButtonFlat(Context context, AttributeSet attrs) {
super(context, attrs);
}
protected void setDefaultProperties(){
minHeight = 36;
minWidth = 88;
rippleSize = 3;
// Min size
setMinimumHeight(Utils.dpToPx(minHeight, getResources()));
setMinimumWidth(Utils.dpToPx(minWidth, getResources()));
setBackgroundResource(R.drawable.background_transparent);
}
@Override
protected void setAttributes(AttributeSet attrs) {
// Set text button
String text = null;
int textResource = attrs.getAttributeResourceValue(ANDROIDXML,"text",-1);
if(textResource != -1){
text = getResources().getString(textResource);
}else{
text = attrs.getAttributeValue(ANDROIDXML,"text");
}
if(text != null){
textButton = new TextView(getContext());
textButton.setText(text.toUpperCase());
textButton.setTextColor(backgroundColor);
textButton.setTypeface(null, Typeface.BOLD);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textButton.setLayoutParams(params);
addView(textButton);
}
int bacgroundColor = attrs.getAttributeResourceValue(ANDROIDXML,"background",-1);
if(bacgroundColor != -1){
setBackgroundColor(getResources().getColor(bacgroundColor));
}else{
// Color by hexadecimal
// Color by hexadecimal
background = attrs.getAttributeIntValue(ANDROIDXML, "background", -1);
if (background != -1)
setBackgroundColor(background);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (x != -1) {
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(makePressColor());
canvas.drawCircle(x, y, radius, paint);
if(radius > getHeight()/rippleSize)
radius += rippleSpeed;
if(radius >= getWidth()){
x = -1;
y = -1;
radius = getHeight()/rippleSize;
if(onClickListener != null&& clickAfterRipple)
onClickListener.onClick(this);
}
invalidate();
}
}
/**
* Make a dark color to ripple effect
* @return
*/
@Override
protected int makePressColor(){
return Color.parseColor("#88DDDDDD");
}
public void setText(String text){
textButton.setText(text.toUpperCase());
}
// Set color of background
public void setBackgroundColor(int color){
backgroundColor = color;
if(isEnabled())
beforeBackground = backgroundColor;
textButton.setTextColor(color);
}
@Override
public TextView getTextView() {
return textButton;
}
public String getText(){
return textButton.getText().toString();
}
}