package aisk.bottombar;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class BottomBar extends HorizontalScrollView {
private ImageView mSelectedBtn;
private ImageView mBtn1;
private ImageView mBtn2;
private ImageView mBtn3;
private ImageView mBtn4;
private Paint paint;
private Triangle curTriangle = null;
private Triangle tarTriangle = null;
private ImageView mBtn5;
private ImageView mBtn6;
private ImageView mBtn7;
public BottomBar(Context context) {
this(context, null);
}
public BottomBar(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(false);
setHorizontalScrollBarEnabled(false);
LayoutInflater.from(context).inflate(R.layout.bottom_bar, this, true);
paint = new Paint();
paint.setAntiAlias(true);
mBtn1 = (ImageView)findViewById(R.id.btn1);
mBtn2 = (ImageView)findViewById(R.id.btn2);
mBtn3 = (ImageView)findViewById(R.id.btn3);
mBtn4 = (ImageView)findViewById(R.id.btn4);
mBtn5 = (ImageView)findViewById(R.id.btn5);
mBtn6 = (ImageView)findViewById(R.id.btn6);
mBtn7 = (ImageView)findViewById(R.id.btn7);
// TypedArray a = context.obtainStyledAttributes(attrs,
// R.styleable.BottomBar);
// mSelectedBtn = a.getInt(R.styleable.BottomBar_selected_btn, 1);
// a.recycle();
View.OnClickListener clickBtn = new View.OnClickListener() {
@Override
public void onClick(View view) {
mSelectedBtn = (ImageView)view;
//Log.d("Selected Button:", String.valueOf(mSelectedBtn));
tarTriangle.left = view.getLeft() + view.getWidth()/2 - 10;
tarTriangle.right = view.getLeft() + view.getWidth()/2 + 10;
tarTriangle.top = view.getTop() - 4;
tarTriangle.bottom = view.getTop() + 13.3f;
invalidate();
}
};
mBtn1.setOnClickListener(clickBtn);
mBtn2.setOnClickListener(clickBtn);
mBtn3.setOnClickListener(clickBtn);
mBtn4.setOnClickListener(clickBtn);
mBtn5.setOnClickListener(clickBtn);
mBtn6.setOnClickListener(clickBtn);
mBtn7.setOnClickListener(clickBtn);
setSelectedBtn(mBtn1);
}
public void setSelectedBtn(ImageView i) {
mSelectedBtn = i;
}
public ImageView getSelectedBtn() {
return mSelectedBtn;
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//Log.d("Validated!", "Should not always validate");
int step = getWidth()/30;
canvas.drawColor(Color.BLACK);
paint.setColor(Color.LTGRAY);
paint.setStyle(Paint.Style.FILL);
if (curTriangle == null){
curTriangle = new Triangle(
mBtn1.getLeft() + mBtn1.getWidth()/2 - 10,
mBtn1.getTop() - 4,
mBtn1.getLeft() + mBtn1.getWidth()/2 + 10,
mBtn1.getTop() + 13.3f
);
}
if (tarTriangle == null){
tarTriangle = new Triangle(
mBtn1.getLeft() + mBtn1.getWidth()/2 - 10,
mBtn1.getTop() - 4,
mBtn1.getLeft() + mBtn1.getWidth()/2 + 10,
mBtn1.getTop() + 13.3f
);
}
if (Math.abs(curTriangle.left - tarTriangle.left) < step) {
curTriangle.left = tarTriangle.left;
curTriangle.right = tarTriangle.right;
curTriangle.reDraw();
}
if (curTriangle.left > tarTriangle.left){
curTriangle.left -= step;
curTriangle.right -= step;
curTriangle.reDraw();
invalidate();
}
else if (curTriangle.left < tarTriangle.left) {
curTriangle.left += step;
curTriangle.right += step;
curTriangle.reDraw();
invalidate();
}
canvas.drawPath(curTriangle.getPath(), paint);
}
}