Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialNIKOLAOS CHRISTOU
4,724 PointsI want to implement the ColorWheel without random function. Can someone help me?
I want to implement the ColorWheel without random function. Can someone help me?
2 Answers
Ezekiel dela Peña
6,231 PointsHi! there are many ways you can do this. But here is an example. If you wanted to have a fixed color for each fact.
Here is just some idea on how it will turn out
In my code mColor[] from Color wheel and mFacts[] in FactBook is 1:1
example: if I get fact "Olympic gold medals are actually made mostly of silver." which is on index[2] of mFacts. the color I should get should be index[2] of mColor[] which is "#c25975", // mauve
Main Code:
package com.zeke.funfacts;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class FunFactsActivity extends AppCompatActivity {
// Declare view var
private FactBook mFactBookfact = new FactBook();
private ColorWheel mColorWheel = new ColorWheel();
private TextView mFactTxtView;
private Button mShowFactBtn;
private RelativeLayout mRelativeLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fun_facts);
// Assign views from the layout file to the corresponding variable
mFactTxtView = (TextView) findViewById(R.id.factTextView);
mShowFactBtn = (Button) findViewById(R.id.showFactButton);
mRelativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
mShowFactBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//randomNum gets the random number used
int randomNum = mFactBookfact.returnRandomNum();
String fact = mFactBookfact.getFact(randomNum);
int color = mColorWheel.getColor(randomNum);
mRelativeLayout.setBackgroundColor(color);
// Update the screen with a random fact
mFactTxtView.setText(fact);
}
});
}
}
FactBook
package com.zeke.funfacts;
import java.util.Random;
public class FactBook {
private String[] mFacts = {
"Ants stretch when they wake up in the morning.",
"Ostriches can run faster than horses.",
"Olympic gold medals are actually made mostly of silver.",
"You are born with 300 bones; by the time you are an adult you will have 206.",
"It takes about 8 minutes for light from the Sun to reach Earth.",
"Some bamboo plants can grow almost a meter in just one day.",
"The state of Florida is bigger than England.",
"Some penguins can leap 2-3 meters out of the water.",
"On average, it takes 66 days to form a new habit.",
"Mammoths still walked the earth when the Great Pyramid was being built." };
public String getFact(int randomNum) {
// Randomly select a fact
String fact = mFacts[randomNum];
return fact;
}
//this function returns randomNum use to get the fact
public int returnRandomNum() {
return new Random().nextInt(mFacts.length);
}
}
Color Wheel:
package com.zeke.funfacts;
import android.graphics.Color;
import java.util.Random;
public class ColorWheel {
private String[] mColor = {
"#39add1", // light blue
"#3079ab", // dark blue
"#c25975", // mauve
"#e15258", // red
"#f9845b", // orange
"#838cc7", // lavender
"#7d669e", // purple
"#53bbb4", // aqua
"#51b46d", // green
"#e0ab18", // mustard
/* commenting this
"#637a91", // dark gray
"#f092b0", // pink
"#b7c0c7" // light gray
*/
};
public int getColor(int randomNum) {
// Randomly select a color
String color = mColor[randomNum];
int colorAsInt = Color.parseColor(color);
return colorAsInt;
}
}
NIKOLAOS CHRISTOU
4,724 PointsThank you very much, for your response.