我正在尝试在显示外部设备音量的应用程序中实现一个指示器。为此,我创建了一个布局,它应该根据所述设备的当前体积在运行时绘制矩形子级。
我该怎么做呢?具体来说,我希望绘制这些矩形的高度与它们的父级相匹配。
我正在尝试在显示外部设备音量的应用程序中实现一个指示器。为此,我创建了一个布局,它应该根据所述设备的当前体积在运行时绘制矩形子级。
我该怎么做呢?具体来说,我希望绘制这些矩形的高度与它们的父级相匹配。
使用 ProgressBar 或 SeekBar(禁用触摸)视图并使用它们的方法 setProgress(int value) 进行更新。
我认为这将有助于你的追求。其实很简单,只要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);
}
}
希望能帮助到你。