外部デバイスの音量レベルを示すインジケーターをアプリケーションに実装しようとしています。このために、デバイスの現在のボリュームに応じて、Rectangle の子が実行時に描画されるレイアウトを作成しました。
これを達成するにはどうすればよいですか?具体的には、これらの長方形を親の高さと一致する高さで描画したいと考えています。
外部デバイスの音量レベルを示すインジケーターをアプリケーションに実装しようとしています。このために、デバイスの現在のボリュームに応じて、Rectangle の子が実行時に描画されるレイアウトを作成しました。
これを達成するにはどうすればよいですか?具体的には、これらの長方形を親の高さと一致する高さで描画したいと考えています。
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);
}
}
それが役に立てば幸い。