本文实例讲述了Android编程实现随机生成颜色的方法。分享给大家供大家参考,具体如下:
网上有个选择器开源项目,选择颜色值。而在这里我想实现的是动态修改一个视图的背景色。
开一个线程,每隔1 s修改一次视图的背景色。
我们知道在安卓里设置一个视图的背景色有
framelayout.setBackgroundColor (Color.parseColor (“#”+ arg0.obj));
就是用安卓的颜色类去解析一个带#号的十六进制色值。现在要做的是动态随机获取这个16进制色值。
Java给我们提供了两种方法获取随机数:
通过随机类来产生一个随机数,这个是专业的随机工具类,功能强大。
前面有篇文章讲的比较详细https://www.jb51.net/article/45886.htm
1,带种子与不带种子的区别
随机类使用的根本是策略分带种子和不带种子的随机的实例。
通俗说,两者的区别是:
带种子的,每次运行生成的结果都是一样的。
不带种子的,每次运行生成的都是随机的,没有规律可言。
2,创建不带种子的随机对象
随机随机=new随机(); >之前3,创建不带种子的随机对象
有两种方法:
1)
随机随机=new随机l (555); >之前2)
随机随机=new随机(); random.setSeed (555 l); >之前总的来说,随机可以生成一个指定范围以内的随机数。
比如:要生成1000到100之间的随机数
random.nextInt (1000) + 100;.
我测试过了,如果让<代码> random.nextInt(1) 代码>返回的永远都不会是1,都是0
而通过<代码> math . random() 代码>返回一个0到1之间的双值。
如果要生成1000到100之间的随机数,则
math . random () * (1000 - 100) + 100; >之前但是16进制的颜色值如何生成呢。
我用
长我=arseLong (“ff000000”, 16); 长我=arseLong (“ffffffff”, 16); >之前测试了下,返回的是一个长型的数据。
长型转换成int型的可以直接<代码> int k=(int)我;代码>得到的这个k是个负数。这个跟int类型的长度有关,具体可以去深究下
int类型和长型转换。
全0的,通过长型转成的int型大小是-16777216,
全的,通过长型转成的int型大小是1;现在知道范围了,可以用随机或者数学生成一个范围在16777216到1之间的一个随机数了。
然后将这个随机数取负数,然后通过
十六进制字符串=Integer.toHexString (-16777216); >之前这个方法可以得到一个十六进制的数,如:FFFFFFFF;
这个十六进制的字符就是我们需要用<代码> Color.parse> 代码解析的色值了。下面大家应该知道怎么做了吧!
<强> 强>
<强> 强>
<强> 强>
<强> 强>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android布局布局技巧总结》,《Android视图视图技巧总结》,《Android编程之活动操作技巧总结》,《Android操作json格式数据技巧总结》,《Android资源操作技巧汇总》及《安卓控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
Android编程实现随机生成颜色的方法示例