長方形と同じ数のビューを作成し、それらの可視性を変更したいですか? そうしないでください。レイアウト内が混乱します。代わりに、カスタム ビューを作成して onDraw() をオーバーライドします。onDraw 内では、canvas.drawRect() を使用して長方形を描画します。この方法で、毎秒 30 ~ 60 フレームを簡単に取得できます。これは単純で不完全な例ですが、正しい方向に進むはずです。
private class AmplitudeView extends View {
private int mWidth;
private int mHeight;
private Paint mRectPaint;
public AmplitudeView(Context context, AttributeSet attrs) {
super(context, attrs);
mRectPaint = new Paint() {
{
setStyle(Style.FILL);
}
};
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mWidth = w;
mHeight = h;
}
@Override
protected void onDraw(Canvas canvas) {
int numRects = 10;
int red = 255;
int green = 0;
int incr = 255/numRects;
for (int i = 0; i< numRects;i++){
//TODO calculate color based on amplitude
mRectPaint.setColor(Color.argb(0xff, red, green, 0));
//TODO calculate rectangle
canvas.drawRect(r, mRectPaint);
red-=incr;
green+=incr;
}
}
}