Ubah nilai warna hex (#ffffff) menjadi nilai integer


89

Saya menerima nilai warna hex dari server (dalam bentuk ini #xxxxxx, misalnya #000000untuk hitam)

Bagaimana cara mengubahnya menjadi nilai integer?

Saya mencoba melakukan Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))untuk mendapatkan hasil yang lebih kuat 0x000000, tetapi ini tidak ditafsirkan sebagai di intsini, ada saran lain?

Saya menerima kesalahan: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

Saya menggunakan Android SDK untuk setBackgroundColor(int color)fungsinya, yang membutuhkan - seperti yang bisa Anda duga - nilai warna integer.

Ini adalah LAWAN dari pertanyaan ini: Bagaimana cara mengubah integer warna menjadi String hex di Android?


Adapun beberapa alasan saya tidak dapat memposting ... Anda hampir sampai, tetapi Anda memerlukan metode dua argumen valueOf, di mana Anda menentukan input string (tanpa #, tentu saja) dan radix, yang menentukan basis. Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) Ini dapat dilakukan dengan basis bilangan bulat apa pun! download.oracle.com/javase/6/docs/api/java/lang/… , int)
ty1824

Ya, saya juga tidak dapat memposting tanggapan saya. Mike Samuel cukup banyak mengatakan apa yang akan saya katakan.
jual

Jawaban:



32

Jawabannya simpel banget guys, di android jika ingin merubah warna hex menjadi int, gunakan saja kelas Color android , contoh gambar dibawah ini

ini untuk warna abu-abu terang

Color.parseColor("#a8a8a8");

Itu saja dan Anda akan mendapatkan hasil Anda.


Dan jelaskan tentang cara menggunakan: someText.setTextColor (Color.parseColor ("# f9e6ff"))
Brian M

15
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

2
terima kasih atas sarannya, saya mencoba ini sekarang tidak berhasil, dan ternyata fungsi Android yang disertakan adalah satu-satunya jenis hasil warna yang berfungsi, meskipun keduanya mengembalikan int. Color.parseColor (myPassedColor)) Saya tidak berpikir ini adalah masalah khusus Android, tetapi ternyata
CQM

4
Saya tidak tahu mengapa orang-orang memilih ini; itu tidak berhasil !! Warna-warna di sini disimpan dalam 32 bit sehingga mencetaknya membuatnya ditampilkan sepanjang waktu. parseInt mencari `- 'eksplisit untuk menunjukkan negatif, dan tidak menghormati bit tanda untuk int atau long. Sehingga akan memberikan angka yang salah.
Christian Chapman

1
@enthdegree, Mengutip OP, "Saya menerima nilai warna hex dari server (dalam bentuk ini, #xxxxxx" jadi warna yang ditangani OP adalah 24 bit bukan 32 bit; tidak ada saluran alfa.
Mike Samuel

1
@AllDayAmazing, '#' bukan digit hex, tanda, atau pemisah desimal jadi parseIntakan gagal jika menemukannya pada input.
Mike Samuel

Kesalahan saya, saya begitu tertanam dalam apa yang saya lakukan sehingga saya membacanya dengan cepat dan melihatnya parseColor(). Anda sangat benar.
AllDayAmazing

7

Saya memiliki masalah yang sama dengan yang saya temukan dalam bentuk warna #AAAAAAdan saya ingin mengubahnya menjadi bentuk yang dapat digunakan oleh android. Saya menemukan bahwa Anda hanya dapat menggunakan 0xFFAAAAAAsehingga android dapat secara otomatis mengetahui warnanya. Perhatikan yang pertama FFadalah alphanilai jitu . Semoga membantu


4

Jawaban sebenarnya adalah yang paling sederhana dan termudah ini ....

String white = "#ffffff";
int whiteInt = Color.parseColor(white);

3

Saya menghadapi masalah yang sama. Dengan cara ini saya bisa menyelesaikannya. Seperti yang dikatakan CQM, menggunakan Color.parseColor () adalah solusi yang baik untuk masalah ini.

Ini kode yang saya gunakan:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

Dalam hal ini target saya adalah mengubah warna teks Tombol (Button_C) ketika saya mengubah pemilihan warna dari Preferensi saya (color_prefs).



1

Dapatkan Kode Warna Preferensi Bersama dalam String lalu Konversikan ke integer dan tambahkan warna latar belakang tata letak:

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

0

Coba ini, buat drawable di resource Anda ...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>

lalu gunakan ...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

dengan warna ... "#FFFFFF"

jika warnanya transparan gunakan ... setAlpha

mView1.setAlpha(x); dengan x float 0-1 Ej (0.9f)

Semoga berhasil

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.