おかげだから、できるだけ多くのビューを作りたいですか? しないでください。あなたのレイアウトの中で混乱するでしょう。代わりにカスタムビューを作成し、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;
}
}
}