【发布时间】:2018-12-21 04:42:48
【问题描述】:
这不是一个重复的问题,我知道有些问题和我的一样,但我需要有关如何在我的应用中实施的帮助。
我正在尝试制作一个可以捕获颜色的 android 应用程序,但我只发现了如何获取 Hex 值,但我真的需要颜色的名称! 请帮助,有人! 下面是整个代码,但它说的是哪里
public static String makeHexString(int value) {
return "#" + Integer.toHexString(value).substring(2);}
这里的这一行,Integer.toHexString 我怎样才能让它得到颜色名称而不是十六进制值?
public class ColorItem implements Parcelable {
protected final long mId;
protected int mColor;
protected String mName;
protected final long mCreationTime;
protected transient String mHexString;
protected transient String mRgbString;
protected transient String mHsvString;
public ColorItem(long id, int color) {
mId = id;
mColor = color;
mCreationTime = System.currentTimeMillis();
}
private ColorItem(Parcel in) {
this.mId = in.readLong();
this.mColor = in.readInt();
this.mCreationTime = in.readLong();
this.mName = in.readString();
}
public ColorItem(int color) {
mId = mCreationTime = System.currentTimeMillis();
mColor = color;
}
public long getId() {
return mId;
}
public int getColor() {
return mColor;
}
public void setColor(int color) {
if (mColor != color) {
mColor = color;
mHexString = makeHexString(mColor);
mRgbString = makeRgbString(mColor);
mHsvString = makeHsvString(mColor);
}
}
public long getCreationTime() {
return mCreationTime;
}
public String getHexString() {
if (mHexString == null) {
mHexString = makeHexString(mColor);
}
return mHexString;
}
public String getRgbString() {
if (mRgbString == null) {
mRgbString = makeRgbString(mColor);
}
return mRgbString;
}
public String getHsvString() {
if (mHsvString == null) {
mHsvString = makeHsvString(mColor);
}
return mHsvString;
}
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
public static String makeHexString(int value) {
return "#" + Integer.toHexString(value).substring(2);
}
public static String makeRgbString(int value) {
return "rgb(" + Color.red(value) + ", " + Color.green(value) + ", " + Color.blue(value) + ")";
}
public static String makeHsvString(int value) {
float[] hsv = new float[3];
Color.colorToHSV(value, hsv);
return "hsv(" + (int) hsv[0] + "°, " + (int) (hsv[1] * 100) + "%, " + (int) (hsv[2] * 100) + "%)";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.mId);
dest.writeInt(this.mColor);
dest.writeLong(this.mCreationTime);
dest.writeString(this.mName);
}
public static final Creator<ColorItem> CREATOR = new Creator<ColorItem>() {
public ColorItem createFromParcel(Parcel source) {
return new ColorItem(source);
}
public ColorItem[] newArray(int size) {
return new ColorItem[size];
}
};
}
【问题讨论】:
-
你想要颜色的十六进制代码名称吗?
-
是的,请!我希望能够在我的应用程序上显示颜色的名称,而不是十六进制值或 RGB
-
你能举个例子说明一下吗?
-
例如,我的应用程序选择了屏幕中心的颜色,但我能够以 RGB、HEX 和 HSV 进行捕捉,但我真正想要的是它会自动显示名称颜色,而不是前面提到的那些值。我想过做,就像一个颜色范围是那个特定的名字,但我不知道如何应用它,帮助!
-
您是否尝试为来自
#XXXXXX十六进制字符串的超过 1600 万种颜色中的每一种生成名称?例如,您希望#FFFFFE取什么名字?
标签: java android android-studio android-activity