Android: генерировать случайный цвет по щелчку?
у меня есть ImageView
, в котором я программно создаю чертежи и представляю их пользователю. Моя цель-нажать на сказал ImageView
и изменить цвет drawable.
как бы я пошел о случайном изменении цвета бит? Я в настоящее время возиться с Random()
,Color.argb()
и еще несколько вещей, но я не могу заставить его работать!
9 ответов:
Random rnd = new Random(); paint.setARGB(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
или
Random rnd = new Random(); int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); view.setBackgroundColor(color);
хотя в вашем случае кажется, что вы хотите создать новый drawable и назначить его вашему представлению. Что на самом деле можно нарисовать в вашем случае? Это изображение, форма, заливка...
Я встретил это, и это мой код, может помочь
/** * view-source:http://www.kareno.org/js/colors/ 参考 *Get Random background color and the text color for the background * @return 0--》background * 1--》text color */ public static int[] getRandomColor() { Random random = new Random(); int RGB = 0xff + 1; int[] colors = new int[2]; int a = 256; int r1 = (int) Math.floor(Math.random() * RGB); int r2 = (int) Math.floor(Math.random() * RGB); int r3 = (int) Math.floor(Math.random() * RGB); colors[0] = Color.rgb(r1, r2, r3); if((r1 + r2 + r3) > 450) { colors[1] = Color.parseColor("#222222"); }else{ colors[1] = Color.parseColor("#ffffff"); } return colors; }
Это мой код, который я использовал в приложении, он может помочь вам.
Он генерирует случайный цвет на ощупь
public boolean onTouch(View v, MotionEvent event) { int x = (int)event.getX(); int y = (int) event.getY(); float w = v.getWidth(); if(x < (w * (1.0/3) )){ layout.setBackgroundColor(Color.rgb(255,x,y)); }else if(x < (w * (2.0 / 3))){ layout.setBackgroundColor(Color.rgb(x,255,y)); }else{ layout.setBackgroundColor(Color.rgb(x,y,255)); } return true; }
public static int randomColor(){ float[] TEMP_HSL = new float[]{0, 0, 0}; float[] hsl = TEMP_HSL; hsl[0] = (float) (Math.random() * 360); hsl[1] = (float) (40 + (Math.random() * 60)); hsl[2] = (float) (40 + (Math.random() * 60)); return ColorUtils.HSLToColor(hsl); }
наиболее точное решение этой проблемы:
-во-первых, добавьте это в Gradle (приложение),
compile 'com.github.lzyzsd.randomcolor:library:1.0.0'
затем скомпилировать и перестроить приложение.
-второй шаг просто использовать его таким образом,
RandomColor randomColor = new RandomColor(); Button l = findviewbyid(R.id.B1); l.setBackgroundColor(randomColor.randomColor());
Ссылки:
надеюсь, что следующие два решения могут помочь вам.
есть два способа получить случайные цвета программно установить в
view
1.Первое решение
public int randomColor() { Random random= new Random(); return Color.argb(255, random.nextInt(256), random.nextInt(256), random.nextInt(256)); }
если вы используете в
adapter
при прокрутке вы можете получить случайные цвета для того жеview
это не может выглядеть хорошо, чтобы избежать этого вы можете использовать второе решение.2.Второе Решение
вы можете использовать
ColorGenerator.DEFAULT
вместоColorGenerator.MATERIAL
по вашему выбору.Вы также можете использовать любойnumber
вместоposition
ColorGenerator generator = ColorGenerator.MATERIAL; int color = generator.getColor(position); holder.mEvent_color_strip.setBackgroundColor(color);