0

外部デバイスの音量レベルを示すインジケーターをアプリケーションに実装しようとしています。このために、デバイスの現在のボリュームに応じて、Rectangle の子が実行時に描画されるレイアウトを作成しました。

これを達成するにはどうすればよいですか?具体的には、これらの長方形を親の高さと一致する高さで描画したいと考えています。

4

2 に答える 2

0

ProgressBarまたはSeekBar(タッチ​​が無効になっている)ビューを使用し、それらのメソッドsetProgress(int value)を使用して更新します。

于 2012-12-18T10:51:03.430 に答える
0

これはあなたの探求に役立つと思います。実際には非常に簡単LinearLayoutです。同じ幅の子をいくつか作成するだけです。

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class CustomView extends LinearLayout {
    private ArrayList<ImageView> views = new ArrayList<ImageView>();

    public CustomView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        init(context);
    }

    public CustomView(Context context) {
        super(context);
        init(context);
    }

    private void init(Context context) {
        this.setOrientation(LinearLayout.HORIZONTAL);
        for (int i = 0; i < 10; i++) {
            ImageView loadingPiece = new ImageView(context);
            loadingPiece.setBackgroundColor(Color.RED);
            this.addView(loadingPiece);
            LayoutParams layoutParams = (LayoutParams)loadingPiece.getLayoutParams();
            layoutParams.weight = 1.0f;
            layoutParams.height = this.getHeight();
            layoutParams.width = 0;
            loadingPiece.setLayoutParams(layoutParams);
            views.add(loadingPiece);
        }
    }

    public void setPercentage(int amountToShow) {
        for (int i = 0; i < views.size(); i++) 
            if (i < amountToShow)
                views.get(i).setVisibility(View.VISIBLE);
            else
                views.get(i).setVisibility(View.INVISIBLE);
    }
}

それが役に立てば幸い。

于 2012-12-18T11:10:34.297 に答える