मैं अपने आवेदन में "टैगिंग" कार्यक्षमता पेश कर रहा हूं, और टैग्स को प्रदर्शित करने की अनुमति देने के तरीकों में से एक यह है कि टेक्स्ट को उस रंग पर सेट करें जिसे उपयोगकर्ता ने प्रत्येक के लिए चुना है। मेरे आवेदन में पृष्ठभूमि के साथ तीन थीम हैं जो सफेद, काले और नोटपैड-जैसे ब्राउन हैं (ये भविष्य में बदल सकते हैं/बढ़ सकते हैं)। मैं अपने देशी रंग में टैग को प्रदर्शित करने में सक्षम होना चाहता हूं अगर यह पृष्ठभूमि को आसानी से विपरीत करता है, और अन्य थीम के लिए डिफ़ॉल्ट टेक्स्ट रंग का उपयोग करें।एंड्रॉइड/जावा: यह निर्धारित करना कि पाठ रंग पृष्ठभूमि के साथ मिश्रण करेगा या नहीं?
मैंने यह निर्धारित करने में मदद करने के लिए एक सहायक कार्य लिखा है कि पाठ को मुखौटा किया जाएगा, लेकिन यह 100% सही नहीं है (मैं यह निर्धारित करना चाहता हूं कि रंगों को तीनों एचएसवी घटकों के आधार पर मुखौटा किया जाएगा, और दाएं अब संतृप्ति तुलना वैध नहीं है)। कोड नीचे है।
public static boolean colorWillBeMasked(int color, Application app){
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
//note 0, black 1, white 2
int theme = app.api.getThemeView();
System.out.println("h=" +hsv[0]+ ", s=" +hsv[1]+ ", v=" +hsv[2]+", theme="+theme);
if(android.R.color.transparent == color) return true;
// color is dark
if(hsv[2] <= .2){
if(theme == 1) return true;
}
// color is light
else if(hsv[2] >= .8) {
if(theme == 2) return true;
}
return false;
}
जब नीले, लाल, पारदर्शी, काले, पीले और हरे रंग उत्पादन इस प्रकार है (क्रमशः) के साथ इस कार्यप्रणाली को कॉल:
- एच = 0.0, एस = 1.0, वी = 1.0, विषय = 1
- एच = २२९.४१,१७७, एस = 1.0, वी = 1.0, विषय = 1
- एच = 267.6923, रों 1.0 =, वी = 0.०५,०९,८०,३९३, विषय = 1
- एच = 0.0, एस = 0.0, वी = 0.0, थीम = 1
- एच = 59.529 41, एस = 1.0, वी = 1.0, विषय = 1
- एच = १११.२९४११, एस = 1.0, वी = 1.0, विषय = 1
मेरा प्रश्न है: रंग, संतृप्तता और मूल्य के आधार पर, कैसे क्या आप यह निर्धारित कर सकते हैं कि एक निश्चित तरीके से रंगीन पाठ एक सफेद पृष्ठभूमि पर एक काला पृष्ठभूमि बनाम दिखाई देगा या यदि इसे मुखौटा किया जाएगा? कृपया मेरा एल्गोरिदम लें और इसे सुधारें या मुझे नया बनाने में मदद करें।
अग्रिम धन्यवाद।
क्या के लिए धन्यवाद? आपने एक सवाल भी नहीं पूछा, लेकिन फिर भी: आपका स्वागत है। – Stephan
पाठ को अपडेट किया गया, क्षमा करें, मैं स्पष्ट नहीं था। – Blaskovicz