If you think the Android project smartnavi listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package org.osmdroid.bonuspack.kml;
//fromwww.java2s.comimport android.graphics.Color;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.IOException;
import java.io.Writer;
/**
* Handling of KML ColorStyle
*
* @author M.Kergall
*/publicclass ColorStyle implements Parcelable {
publicstaticfinal Parcelable.Creator<ColorStyle> CREATOR = new Parcelable.Creator<ColorStyle>() {
@Override
public ColorStyle createFromParcel(Parcel source) {
returnnew ColorStyle(source);
}
@Override
public ColorStyle[] newArray(int size) {
returnnew ColorStyle[size];
}
};
/**
* color modes
*/staticfinalint MODE_NORMAL = 0, MODE_RANDOM = 1;
publicint mColor;
publicint mColorMode;
public ColorStyle() {
this(0);
}
ColorStyle(int color) {
this.mColor = color;
mColorMode = MODE_NORMAL;
}
public ColorStyle(Parcel in) {
mColor = in.readInt();
mColorMode = in.readInt();
}
/**
* return color in Android int color format
*/publicstaticint parseKMLColor(String sColor) {
sColor = sColor.trim();
while (sColor.length() < 8)
sColor = "0" + sColor;
String aa = sColor.substring(0, 2);
String bb = sColor.substring(2, 4);
String gg = sColor.substring(4, 6);
String rr = sColor.substring(6, 8);
sColor = "#" + aa + rr + gg + bb;
int iColor = 0xFF000000; //default
try {
iColor = Color.parseColor(sColor);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
return iColor;
}
/**
* return color in KML color format, which is: AABBGGRR, in hexa values
*/publicstatic String colorAsKMLString(int aColor) {
return String.format("%02X%02X%02X%02X", Color.alpha(aColor), Color.blue(aColor), Color.green(aColor), Color.red(aColor));
}
/**
* return color in usual Android color format, which is: #AARRGGBB, in hexa values
*/publicstatic String colorAsAndroidString(int aColor) {
return String.format("#%08X", 0xFFFFFFFF & aColor);
}
public String colorAsAndroidString() {
return colorAsAndroidString(mColor);
}
//Parcelable implementation ------------
/**
* @return the color to use on an actual object. If color mode is random, generate appropriate random color.
*/publicint getFinalColor() {
if (mColorMode == MODE_NORMAL)
return mColor;
else { //mode random:
//generate a random color within the range of each color component:
int alpha = Color.alpha(mColor);
double randomRange = Math.random();
int red = Color.red(mColor);
red = (int) (red * randomRange);
int green = Color.green(mColor);
green = (int) (green * randomRange);
int blue = Color.blue(mColor);
blue = (int) (blue * randomRange);
return Color.argb(alpha, red, green, blue);
}
}
publicvoid writeAsKML(Writer writer) {
try {
writer.write("<color>" + colorAsKMLString(mColor) + "</color>\n");
if (mColorMode == MODE_RANDOM) {
writer.write("<colorMode>random</colorMode>\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
publicint describeContents() {
return 0;
}
@Override
publicvoid writeToParcel(Parcel out, int flags) {
out.writeInt(mColor);
out.writeInt(mColorMode);
}
}