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());Ссылки:
надеюсь, что следующие два решения могут помочь вам.
есть два способа получить случайные цвета программно установить в
view1.Первое решение
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вместоpositionColorGenerator generator = ColorGenerator.MATERIAL; int color = generator.getColor(position); holder.mEvent_color_strip.setBackgroundColor(color);
