건강보-호흡 주파수 부분 개발(7)

2093 단어

호흡 주파수 페이지


호흡 주파수 페이지는 서로 다른 데시벨 수를 갱신하여 새로 채집한 소리의 크기를 동적으로 보여야 한다. 이 종류는 앞의 도구 종류인 월드에서 현재의 데시벨 값을 얻을 수 있고 과도적으로 느린 데시벨 페이지를 갱신할 수 있다.코드:
public class SoundDiscView extends ImageView {
private float scaleWidth, scaleHeight;
private int newWidth, newHeight;
private Matrix mMatrix = new Matrix();
private Bitmap indicatorBitmap;
private Paint paint = new Paint();
static final long ANIMATION_INTERVAL = 20;

public SoundDiscView(Context context) {
    super(context);
}

public SoundDiscView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

private void init() {
    Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.noise_index);
    int bitmapWidth = myBitmap.getWidth();
    int bitmapHeight = myBitmap.getHeight();
    newWidth = getWidth();
    newHeight = getHeight();
    scaleWidth = ((float) newWidth) / (float) bitmapWidth;  //       
    scaleHeight = ((float) newHeight) / (float) bitmapHeight;  //      
    mMatrix.postScale(scaleWidth, scaleHeight);   //  mMatrix     
    indicatorBitmap = Bitmap.createBitmap(myBitmap, 0, 0, bitmapWidth, bitmapHeight, mMatrix, true);  //              bitmap

    paint = new Paint();
    paint.setTextSize(18 * ScreenUtil.getDensity(getContext()));
    paint.setAntiAlias(true);  //   
    paint.setTextAlign(Paint.Align.CENTER);
    paint.setColor(Color.WHITE);
}

public void refresh() {
    postInvalidateDelayed(ANIMATION_INTERVAL); //     view
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    if (indicatorBitmap == null) {
        init();
    }
    mMatrix.setRotate(getAngle(World.dbCount), newWidth / 2, newHeight * 215 / 460);   //     
    canvas.drawBitmap(indicatorBitmap, mMatrix, paint);
    canvas.drawText((int) World.dbCount + " DB", newWidth / 2, newHeight * 36 / 46, paint); //      
}

private float getAngle(float db) {
    return (db - 85) * 5 / 3;

}
}

좋은 웹페이지 즐겨찾기