package com.imps.tabletennis.tranning; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; public class StrengthBar { private Bitmap downBmp; private Bitmap pointerBmp; final float x=Constant.BAR_X+Constant.X_OFFSET; final float y=Constant.BAR_Y+Constant.Y_OFFSET; private float width; private float height; private float currHeight; private int extendX=50; private int extendY=10; private float rainbowWidth=Constant.RAINBOW_WIDTH; private float rainbowHeight=Constant.RAINBOW_HEIGHT; private float rainbowGap=Constant.RAINBOW_GAP; private float rainbowX; private float rainbowY; private float pointerWidth; private float pointerHeight; public StrengthBar(Bitmap downBmp,Bitmap pointerBmp) { this.downBmp=downBmp; this.pointerBmp=pointerBmp; this.width=downBmp.getWidth(); this.height=downBmp.getHeight(); currHeight=downBmp.getHeight(); rainbowX=Constant.RAINBOW_X+Constant.X_OFFSET;; rainbowY=height+Constant.RAINBOW_Y+Constant.Y_OFFSET; pointerWidth=pointerBmp.getWidth(); pointerHeight=pointerBmp.getHeight(); System.out.println("StrengthBar<<position("+(x-extendX)+","+(y-extendY)+","+(width+2*extendX)+","+(height+2*extendY)+")"); } public void drawSelf(Canvas canvas,Paint paint) { canvas.drawBitmap(downBmp, x, y,paint); int n=(int) (currHeight/(rainbowHeight+rainbowGap)); n=(n>ColorUtil.result.length)? ColorUtil.result.length :n; for(int i=0;i<n && i<ColorUtil.result.length;i++) { int[] c=ColorUtil.getColor(i); paint.setARGB(255, c[0], c[1], c[2]); float yTemp=rainbowY-(i*(rainbowHeight+rainbowGap)); canvas.drawRect(rainbowX, yTemp, rainbowX+rainbowWidth, yTemp+rainbowHeight, paint); } canvas.drawBitmap(pointerBmp, x-pointerWidth, rainbowY-((n-1)*(rainbowHeight+rainbowGap))-pointerHeight/2,paint);//���Ƶ��µ��� } public void changeCurrHeight(float pressX, float pressY) { if(pressY<=y){ currHeight=this.height; } else if(pressY>=y+this.height){ currHeight=0; } else{ currHeight=this.height-(pressY-y); } } public boolean isActionOnBar(float pressX,float pressY) { return Constant.isPointInRect(pressX, pressY, x-extendX, y-extendY, width+2*extendX, height+2*extendY); } public float getCurrHeight() { return currHeight; } public float getHeight() { return height; } }