android - কিভাবে হেক্সাডেসিমেল রঙ স্ট্রিং থেকে একটি রঙ পেতে




colors hex (8)

আমি একটি হেক্সা স্ট্রিং যেমন "#FFFF0000" থেকে একটি বর্ণ ব্যবহার করতে চাই (বলে) একটি লেআউটের ব্যাকগ্রাউন্ড রঙ পরিবর্তন করতে চাই। Color.HSVToColor একটি বিজয়ী Color.HSVToColor দেখায় কিন্তু এটি একটি প্যারামিটার হিসাবে float[] লাগে।

আমি সমাধান কি কোন বন্ধ?


XML ফাইল res / values ​​/ colors.xml এ সংরক্ষিত হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

এই অ্যাপ্লিকেশন কোড রঙ সম্পদ উদ্ধার করে:

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

এই বিন্যাস এক্সএমএলটি একটি বৈশিষ্ট্যতে রঙ প্রয়োগ করে:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

Xamarin এই ব্যবহার করুন

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));

আমি এটি ব্যবহার করি এবং এটি যে কোনও রঙের সেটিংস করার জন্য এটি আমার জন্য দুর্দান্ত কাজ করে।

public static final int MY_COLOR = Color.rgb(255, 102, 153);

প্রতিটি লাল, সবুজ এবং নীলের জন্য 0-255 ব্যবহার করে রংগুলি সেট করুন, যে কোনও জায়গায় আপনি যে রঙটি ব্যবহার করতে চান তা কেবল COLOR.BLUE বা Color.RED বা COLOR শ্রেণির অন্যান্য স্ট্যাটিক রংগুলির পরিবর্তে MY_COLOR রাখুন।

শুধু রঙ চার্টের জন্য Google অনুসন্ধান করুন এবং এটি 0-255 ব্যবহার করে আপনি সঠিক RGB কোডগুলির সাথে একটি চার্ট খুঁজে পেতে পারেন।


এই প্রশ্নটি হেক্স রঙের সাথে সম্পর্কিত অনুসন্ধানের জন্য আসে তাই আমি এখানে একটি সারাংশ যোগ করব।

Int থেকে রঙ

হেক্স রংগুলি RRGGBB বা AARRGGBB (আলফা, লাল, সবুজ, নীল) ফর্মটি গ্রহণ করে। আমার অভিজ্ঞতায়, সরাসরি কোন int ব্যবহার করার সময়, আপনাকে সম্পূর্ণ AARRGGBB ফর্মটি ব্যবহার করতে হবে। যদি আপনার কেবলমাত্র RRGGBB ফর্ম থাকে তবে এটিকে আলফা (স্বচ্ছতা) সম্পূর্ণরূপে অস্পষ্ট করতে FF দিয়ে এটিকে উপসর্গ করুন। এখানে আপনি কিভাবে কোড সেট করতে হবে। শুরুতে 0x ব্যবহার মানে এটি হেক্সাডেসিমেল এবং বেস 10 নয়।

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

স্ট্রিং থেকে রঙ

অন্যরা যেমন উল্লেখ করেছে, তাই আপনি Color.parseString ব্যবহার করতে পারেন

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

মনে রাখবেন স্ট্রিং অবশ্যই # দিয়ে শুরু হবে। RRGGBB এবং AARRGGBB বিন্যাস উভয়ই সমর্থিত।

এক্সএমএল থেকে রঙ

যখনই সম্ভব আপনি এক্সএমএল থেকে আপনার রং পেতে হবে। এটি প্রস্তাবিত বিকল্প কারণ এটি আপনার অ্যাপ্লিকেশানে রঙ পরিবর্তনগুলি আরো সহজ করে তোলে। আপনি যদি আপনার কোড জুড়ে অনেক হেক্স রং সেট করেন তাহলে এটি পরে তাদের পরিবর্তন করার জন্য একটি বড় ব্যথা হয়।

অ্যান্ড্রয়েড উপাদান নকশা ইতিমধ্যে কনফিগার করা হেক্স মান সঙ্গে রঙ palates আছে।

এই থিম রং আপনার অ্যাপ্লিকেশন জুড়ে ব্যবহার করা হয় এবং এই মত চেহারা:

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3F51B5</color>
  <color name="primary_dark">#303F9F</color>
  <color name="primary_light">#C5CAE9</color>
  <color name="accent">#FF4081</color>
  <color name="primary_text">#212121</color>
  <color name="secondary_text">#757575</color>
  <color name="icons">#FFFFFF</color>
  <color name="divider">#BDBDBD</color>
</resources>

যদি আপনার অতিরিক্ত রং দরকার হয় তবে অনুসরণ করার জন্য একটি ভাল অভ্যাস হল আপনার রঙটিকে xml এ দুটি ধাপে সংজ্ঞায়িত করা। প্রথমে হেক্স মান রঙের নাম দিন এবং তারপরে আপনার অ্যাপ্লিকেশনের একটি উপাদানকে নাম দিন যা একটি নির্দিষ্ট রঙ পেতে হবে। এটি পরে রং সামঞ্জস্য করা সহজ করে তোলে। আবার, এই colors.xml হয়

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>

তারপর যখন আপনি কোডটি রঙে সেট করতে চান, নিম্নলিখিতটি করুন:

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);    
myView.setBackgroundColor(myColor);

অ্যান্ড্রয়েড পূর্বনির্ধারিত রং

রঙের ক্লাস পূর্বনির্ধারিত রঙের সংহত সংখ্যার সাথে আসে। আপনি এটি ভালো ব্যবহার করতে পারেন।

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

অন্যান্য রং হয়

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

নোট

  • হেক্স রংগুলি খুঁজে বের করার একটি দ্রুত উপায় হল জিম্প (অথবা অন্য কোনও ফটো এডিটিং সফটওয়্যার) এর রঙ চয়নকারী ডায়ালগটি খুলতে।
  • উপাদান নকশা মধ্যে স্ট্যান্ডার্ড অস্বচ্ছতা মাত্রা

এটা চেষ্টা কর:

vi.setBackgroundColor(Color.parseColor("#FFFF0000"));

এর পরিবর্তে 0xFFF000 ব্যবহার করে দেখুন এবং রঙিন.এইচভিটোএকোলার পদ্ধতিতে পাস করুন।


সংক্ষিপ্ত হেক্স কোড জন্য

int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);

সেট setBackgroundColor এবং setTextColor ব্যবহার করা যেতে পারে এমন একটি int রঙে যে স্ট্রিংটি রূপান্তর করুন

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

16 মানে এটি হেক্সাডেসিমাল এবং আপনার নিয়মিত 0-9 নয়। ফলাফল হিসাবে একই হওয়া উচিত

int color = 0xFFFF0000;





hex