0

我正在尝试在显示外部设备音量的应用程序中实现一个指示器。为此,我创建了一个布局,它应该根据所述设备的当前体积在运行时绘制矩形子级。

我该怎么做呢?具体来说,我希望绘制这些矩形的高度与它们的父级相匹配。

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 回答