編輯:關於Android編程
本文實例講述了Android編程實現隨機生成顏色的方法。分享給大家供大家參考,具體如下:
網上有個ColorPicker開源項目,選擇顏色值。而在這裡我想實現的是動態修改一個view的背景色。
開一個線程,每隔1s修改一次view的背景色。
我們知道在Android裡設置一個view的背景色有
framelayout.setBackgroundColor(Color.parseColor("#"+arg0.obj));
就是用android的Color類去解析一個帶#號的十六進制色值。現在要做的是動態隨機獲取這個16進制色值。
Java給我們提供了兩種方法獲取隨機數:
一、使用Random類
通過Random類來產生一個隨機數,這個是專業的Random工具類,功能強大。
前面有篇文章講的比較詳細http://www.jb51.net/article/45886.htm
Random類使用說明
1、帶種子與不帶種子的區別
Random類使用的根本是策略分帶種子和不帶種子的Random的實例。
通俗說,兩者的區別是:
帶種子的,每次運行生成的結果都是一樣的。
不帶種子的,每次運行生成的都是隨機的,沒有規律可言。
2、創建不帶種子的Random對象
Random random = new Random();
3、創建不帶種子的Random對象
有兩種方法:
1)
Random random = new Random(555L);
2)
Random random = new Random(); random.setSeed(555L);
總的來說,Random可以生成一個指定范圍以內的隨機數。
比如:要生成1000到100之間的隨機數
random.nextInt(1000)+100;
注意這裡是不包括1000的。
我測試過了,如果讓random.nextInt(1)
返回的永遠都不會是1,都是0
二、直接使用Math.random()方法
而通過Math.random()
返回一個0到1之間的double值。
如果要生成1000到100之間的隨機數,則
Math.random()*(1000-100)+100;
但是16進制的顏色值如何生成呢。
我用
long i = Long.parseLong("ff000000", 16); long i = Long.parseLong("ffffffff", 16);
測試了下,返回的是一個Long型的數據。
Long型轉換成int型的可以直接int k = (int)i;
得到的這個k是個負數。這個跟int類型的長度有關,具體可以去深究下
int類型和long型轉換。
全0的,通過Long型轉成的int型大小是-16777216;
全F的,通過Long型轉成的int型大小是-1;
現在知道范圍了,可以用Random或者Math生成一個范圍在16777216到1之間的一個隨機數了。
然後將這個隨機數取負數。然後通過
String hex = Integer.toHexString(-16777216);
這個方法可以得到一個十六進制的數,如:FFFFFFFF;
這個十六進制的字符就是我們需要用Color.parse
解析的色值了。下面大家應該知道怎麼做了吧!
PS:這裡再為大家推薦幾款相關的顏色工具供大家參考使用:
RGB顏色編碼生成器:
http://tools.jb51.net/color/rgb_color_generator
RGB顏色查詢對照表_顏色代碼表_顏色的英文名稱大全:
http://tools.jb51.net/color/jPicker
在線網頁調色板工具:
http://tools.jb51.net/color/color_picker
在線顏色選擇器工具/RGB顏色查詢對照表:
http://tools.jb51.net/color/colorpicker
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android布局layout技巧總結》、《Android視圖View技巧總結》、《Android編程之activity操作技巧總結》、《Android操作json格式數據技巧總結》、《Android資源操作技巧匯總》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
上一篇文章中我們講解了Android中的幾種常見網絡協議:xml,json,protobuf等,以及各自的優缺點,一般而言主要我們的App涉及到了網絡傳輸都會有這方面的內
適配器模式(Adapter):適配器模式是一種行為模式,它可以把一個類的接口轉換成為另一個所期待的另一種接口,這樣可以使原本因接口無法在一起工作的兩個類能夠在一起工作了。
我們在開發App的時候有時候碰到多個界面有一個共同點的時候,比如,都有相同的TitleBar,並且TitleBar可以設置顯示的文字。TitleBar上的點擊事件,如果給
上篇博客中我們提到了OpenGLES中繪制的兩種方法,頂點法和索引法。之前我們所使用的都是頂點法,這次繪制立方體使用索引法來繪制立方體。構建立方體上篇博客講到正方形的繪制