package edu.mit.mitmobile2;
import android.R.attr;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.StateListDrawable;
public class TabBackgroundDrawable extends StateListDrawable {
//private int mBackgroundColor;
private int mUnderlineColor;
private int mSelectedUnderlineHeight;
private int mUnselectedUnderlineHeight;
public TabBackgroundDrawable(Context context, int underlineColor) {
TabSelectedBackground selected = new TabSelectedBackground();
// TabUnselectedBackground unselectedPressed = new TabUnselectedBackground();
TabUnselectedBackground unselected = new TabUnselectedBackground();
addState(new int[] {attr.state_selected}, selected);
addState(new int[] {attr.state_pressed}, new LayerDrawable(new Drawable[] {getHighlightDrawable(context)/*, unselectedPressed*/}));
addState(new int[] {}, unselected);
mUnderlineColor = underlineColor;
mUnselectedUnderlineHeight = AttributesParser.parseDimension("1dip", context);
mSelectedUnderlineHeight = AttributesParser.parseDimension("5dip", context);
}
private static Drawable getHighlightDrawable(Context context) {
return context.getResources().getDrawable(R.drawable.highlight_background);
}
private class TabSelectedBackground extends Drawable {
@Override
public void draw(Canvas canvas) {
Rect bounds = getBounds();
Paint paint = new Paint();
paint.setColor(mUnderlineColor);
RectF rect = new RectF(bounds);
rect.top = bounds.bottom - mSelectedUnderlineHeight;
canvas.drawRect(rect, paint);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSPARENT;
}
@Override
public void setAlpha(int alpha) { }
@Override
public void setColorFilter(ColorFilter cf) { }
}
private class TabUnselectedBackground extends Drawable {
@Override
public void draw(Canvas canvas) {
Rect bounds = getBounds();
Paint paint = new Paint();
paint.setColor(mUnderlineColor);
RectF rect = new RectF(bounds);
rect.top = bounds.bottom - mUnselectedUnderlineHeight;
canvas.drawRect(rect, paint);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSPARENT;
}
@Override
public void setAlpha(int alpha) { }
@Override
public void setColorFilter(ColorFilter cf) {}
@Override
public boolean isStateful() {
return false;
}
}
}