AndroidでCODEのみでプログレスバーの色を変更する
2023-08-29 08:37:49
質問
ProgressBarクラスを使用したprogressBarがあります。
これをやるだけで
progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
というように入力値を使って、その色を変えたいのですが。
int color = "red in RGB value".progressBar.setColor(color)
といった感じで...
を使うことができない。 XMLレイアウト を使用することはできません。
どのように解決するのですか?
私はここのトピックで助けを見つけたが、リンクを覚えていないように、私は私のニーズに合わせて素晴らしい作品私の完全なソリューションを投稿しています。
// Draw a simple progressBar from xml
progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
// Convert the color (Decimal value) to HEX value: (e.g: #4b96a0)
String color = colorDecToHex(75, 150, 160);
// Define a shape with rounded corners
final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
ShapeDrawable pgDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null, null));
// Sets the progressBar color
pgDrawable.getPaint().setColor(Color.parseColor(color));
// Adds the drawable to your progressBar
ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
progressBar.setProgressDrawable(progress);
// Sets a background to have the 3D effect
progressBar.setBackgroundDrawable(Utils.getActivity().getResources()
.getDrawable(android.R.drawable.progress_horizontal));
// Adds your progressBar to your layout
contentLayout.addView(progressBar);
そして、DECIMALの色値をHEXADECIMALに変換するコードは以下のとおりです。
public static String colorDecToHex(int p_red, int p_green, int p_blue)
{
String red = Integer.toHexString(p_red);
String green = Integer.toHexString(p_green);
String blue = Integer.toHexString(p_blue);
if (red.length() == 1)
{
red = "0" + red;
}
if (green.length() == 1)
{
green = "0" + green;
}
if (blue.length() == 1)
{
blue = "0" + blue;
}
String colorHex = "#" + red + green + blue;
return colorHex;
}
最後の方法は、それほどきれいではないと思いますが、うまくいっています。
このプログレスバーにあまりにも多くの時間を浪費しているので、これがうまくいくことを願っています。
関連
-
[解決済み] TextViewの文字色をコードで設定する方法は?
-
[解決済み] グリッドレイアウトにおけるフリングジェスチャーの検出
-
[解決済み] node.jsのコンソールのフォントカラーを変更する方法は?
-
[解決済み] android:onClick XML属性とsetOnClickListenerは具体的にどのように違うのですか?
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] グリッドビューの高さが削減される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidでプログレスバーの進行色を変更する方法
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] Google Play ストア内部テストのロールアウトが開始できない