2014-09-18 11 views
5

Điều tôi muốn là khi tôi tải ứng dụng lên để ngẫu nhiên có một nền màu nhất định từ danh sách chuỗi được xác định trước được lưu trữ trong tệp xml giá trị được gọi là màu.Android: Đặt màu nền ngẫu nhiên khi tạo

Điều tôi hiện có là một màu được đặt làm nền được xác định thông qua mã màu chuỗi bằng trình chỉnh sửa gui trong nhật thực.

Đối với cuộc sống của tôi không thể làm việc ra làm thế nào để có được nền để chọn ngẫu nhiên một trong 9 dây và hiển thị nó mỗi khi hoạt động được kích hoạt.

Hướng dẫn về điều này sẽ là vô giá.

Trả lời

34

Trong colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <item name="blue" type="color">#FF33B5E5</item> 
    <item name="purple" type="color">#FFAA66CC</item> 
    <item name="green" type="color">#FF99CC00</item> 
    <item name="orange" type="color">#FFFFBB33</item> 
    <item name="red" type="color">#FFFF4444</item> 
    <item name="darkblue" type="color">#FF0099CC</item> 
    <item name="darkpurple" type="color">#FF9933CC</item> 
    <item name="darkgreen" type="color">#FF669900</item> 
    <item name="darkorange" type="color">#FFFF8800</item> 
    <item name="darkred" type="color">#FFCC0000</item> 

    <integer-array name="androidcolors"> 
     <item>@color/blue</item> 
     <item>@color/purple</item> 
     <item>@color/green</item> 
     <item>@color/orange</item> 
     <item>@color/red</item> 
     <item>@color/darkblue</item> 
     <item>@color/darkpurple</item> 
     <item>@color/darkgreen</item> 
     <item>@color/darkorange</item> 
     <item>@color/darkred</item> 
    </integer-array> 

</resources> 

Trong onCreate()

int[] androidColors = getResources().getIntArray(R.array.androidcolors); 
int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)]; 
view.setBackgroundColor(randomAndroidColor); 
1

Bạn có thể đặt biến số Random rnd = new Random(); làm số ngẫu nhiên (sẽ tạo số psuedo ngẫu nhiên giữa 0 và 1). Sau đó, bạn có thể nói:

if (rnd < 0.09) { 
     //pick first colour 
    } else if (rnd >= 0.09 && rnd < 0.18) { 
     //pick second colour 
    } else if (rnd >= 0.18 && rnd < 0.27) { 
     //pick second colour  
    } else // etc etc up to 1.0 when you will have 9 options, each with an equal chance of randomly being picked 

Bằng cách này, các số ngẫu nhiên rnd sẽ xác định màu nền là mỗi lần onCreate() được gọi.

4

Tôi nghĩ rằng tôi có thể tìm thấy một cách tiếp cận dễ dàng nhưng một số thời gian để triển khai, bạn chọn màu ngẫu nhiên từ mảng màu đã xác định và phân tích màu chuỗi đó thành nền của bạn.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="bright_pink">#FF007F</color> 
    <color name="red">#FF0000</color> 
    <color name="orange">#FF7F00</color> 
    <color name="yellow">#FFFF00</color> 
    <color name="chartreuse">#7FFF00</color> 
    <color name="green">#00FF00</color> 
    <color name="spring_green">#00FF7F</color> 
    <color name="cyan">#00FFFF</color> 
    <color name="azure">#007FFF</color> 
    <color name="blue">#0000FF</color> 
    <color name="violet">#7F00FF</color> 
    <color name="magenta">#FF00FF</color> 
<array name="rainbow"> 
    <item>@color/bright_pink</item> 
    <item>@color/red</item> 
    <item>@color/orange</item> 
    <item>@color/yellow</item> 
    <item>@color/chartreuse</item> 
    <item>@color/green</item> 
    <item>@color/spring_green</item> 
    <item>@color/cyan</item> 
    <item>@color/azure</item> 
    <item>@color/blue</item> 
    <item>@color/violet</item> 
    <item>@color/magenta</item> 
</array> 

và hơn java code này

String[] array = context.getResources().getStringArray(R.array.animals_array); String randomStr = array[new Random().nextInt(array.length)];

//here you define your layout

LinearLayout myLayout = (LinearLayout) findViewById(R.id.that_linear);

myLayout.setBackgroundColor(Color.parseColor(randomStr));

+0

@ Phil3992 chỉ addded định nghĩa thân yêu, kiểm tra xem nó. – Kiloreux

4

Có một câu trả lời tốt hơn nhiều so với những người cung cấp.

Nếu bạn muốn Thực sự màu ngẫu nhiên, chọn "ngẫu nhiên" từ tệp res không chứng tỏ là gần như chắc chắn.

Thay vào đó, sử dụng đoạn mã này:

Random rnd = new Random(); 
    currentStrokeColor = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); 
+0

tôi đã nhận giá trị -118692481300, ngoài số nguyên? – kemdo

0

bạn có thể sử dụng ColorGenerator lớp để lấy ngẫu nhiên color.code. Đoạn

đưa ra dưới đây

ColorGenerator generator = ColorGenerator.MATERIAL; 

int color=generator.getRandomColor(); 

đây bạn có thể sử dụng tài liệu tham khảo quan điểm để thiết lập màu như

mUserName.setText("Suraj"); 

mUserName.setTextColor(color); //it will populate name with random color each time you open your activity 
+0

thanx để thay đổi định dạng Vrund Purohit –