Saya memiliki bilangan bulat yang dihasilkan dari sebuah android.graphics.Color
Integer memiliki nilai -16776961
Bagaimana cara mengubah nilai ini menjadi string hex dengan format #RRGGBB
Sederhananya: Saya ingin menampilkan # 0000FF dari -16776961
Catatan: Saya tidak ingin output mengandung alfa dan saya juga sudah mencoba contoh ini tanpa hasil
Jawaban:
Topeng memastikan Anda hanya mendapatkan RRGGBB, dan% 06X memberi Anda hex berlapis nol (selalu 6 karakter):
sumber
Coba Integer.toHexString ()
Sumber: Di Jawa, bagaimana cara mengubah array byte ke string angka hex sambil tetap memimpin nol?
sumber
0x000000FF
, atau0xFF0000FF
jika Anda menghapus alpha.Saya percaya saya telah menemukan jawabannya, Kode ini mengubah bilangan bulat menjadi string hex dan menghapus alpha.
Catatan hanya menggunakan kode ini jika Anda yakin bahwa menghapus alpha tidak akan mempengaruhi apa pun.
sumber
0x00FFFFFF
ini akan crashColor.parseColor
.Inilah yang saya lakukan
Terima kasih kawan, jawaban Anda berhasil
sumber
0x00FFFFFF
-> "FFFFFF" (tanpa alfa). Varian kedua tidak berfungsi untuk0x00000FFF
-> "F" (bit yang hilang).String.format("#%08X", intColor)
Nilai integer warna ARGB ke string heksadesimal:
String heksadesimal untuk nilai integer warna ARGB:
sumber
Dengan metode ini Integer.toHexString , Anda dapat memiliki pengecualian warna tidak dikenal untuk beberapa warna saat menggunakan Color.parseColor.
Dan dengan metode ini String.format ("#% 06X", (0xFFFFFF & intColor)) , Anda akan kehilangan nilai alpha.
Jadi saya merekomendasikan metode ini:
sumber
sumber
Jika Anda menggunakan,
Integer.toHexString
Anda akan berakhir dengan nol yang terlewatkan saat Anda mengonversi warna suka0xFF000123
. Ini adalah solusi berbasis kotlin saya yang tidak memerlukan kelas khusus android maupun java. Jadi Anda bisa menggunakannya di proyek multi platform juga:sumber