我正在尝试在应用程序中实现一个指示器,该指示器显示外部设备的音量级别。为此,我创建了一个Layout,它应该根据所述设备的当前音量将Rectangle子项绘制为运行时。
我该如何完成此操作?具体来说,我希望绘制这些高度与其父级相匹配的矩形。
答案 0 :(得分:0)
使用ProgressBar或SeekBar(带触摸禁用)视图并使用其方法setProgress(int value)进行更新。
答案 1 :(得分: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);
}
}
希望它有所帮助。