In Android development, we often use custom drawable styles, setting shape styles or selector selectors in drawables, but sometimes if multiple drawable styles are needed in one XML, and the styles set in them are only slightly different, then customizing multiple drawable styles will appear bloated, making the drawable too many xml files, which is troublesome to manage, so sometimes I think that I can create drawables in the code.
Penggunaan statelistdrawable dan gradientdrawable
Pemilih Implementasi Java:
/** * Atur pemilih latar belakang * * @param presseddraw * @param normaldraw * @return */private statelistdrawable getSelector (drawable normalDraw, drawable presseddraw) {statelistdraga statelistdrawable = statelistdrawable baru (); stateListDrawable.addState (int baru [] {android.r.attr.state_selected}, presseddraw); stateListDrawable.addState (int baru [] {}, normaldraw); kembalikan statelistdrawable;}Ini untuk membuat pemilih dalam kode. Jenis yang dibuat adalah StateListDrawable. Anda dapat menambahkan status ke pemilih melalui addState (). Namun, perlu dicatat bahwa ketika menambahkan keadaan, ada perintah. StateListDrawable pertama -tama akan menjalankan status tambahan terbaru. Jika bukan negara bagian, jalankan keadaan berikut. Jika keadaan skala besar ditempatkan di depan, itu akan secara langsung melaksanakan keadaan skala besar tanpa melaksanakan keadaan selanjutnya. Selain itu, saat menambahkan status, tambahkan " -" tanda sebelum status, menunjukkan bahwa keadaan ini salah (misalnya: -android.r.attr.state_selected), jika tidak itu benar.
/** * Set shape * * @param radius * @param fillColor * @param width * @param strokeColor * @return */private GradientDrawable getDrawable(int radius, int fillColor, int width, int strokeColor) { GradientDrawable gradientDrawable = new GradientDrawable(); gradientdrawable.setcornerradius (radius); gradientdrawable.setColor (FillColor); gradientdrawable.setstroke (lebar, strokecolor); return gradientdrawable;}Secara dinamis membuat gradientdrawable dalam kode, yang dapat mewujudkan fungsi gaya bentuk dalam gaya yang dapat ditarik. SetColor sama dengan warna pengisian dalam bentuk. Setcornerradius akan mengatur radian dari sudut bulat dalam bentuk. Jika Anda ingin mengatur radian dari satu sudut, Anda dapat menggunakan setCornerRadii () untuk mengatur radian dari setiap sudut. SetStroke () adalah stroke, dan Anda perlu mengisi lebar stroke dan warna tepi.
Akhirnya, penggunaan sederhana:
GradientDrawable Normal = getDrawable (0, Color.White, 1, GetResources (). GetColor (R.Color.App_line_Color)); GradientDrawable Press = getDrawable (0, Color.White, 1, GetResources (). GetColor (config.currentthemecolorid). tekan); TextView.SetBackground (Selector);
Meringkaskan
Di atas adalah kode Java yang diperkenalkan oleh editor untuk mengatur warna latar belakang pemilih di berbagai negara. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!