হেক্সাডেসিমাল কালার স্ট্রিং থেকে কীভাবে রঙ পাবেন


305

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

আমি কি সমাধানের আদৌ কাছে আছি?


উত্তর:


592

Colorক্লাস পদ্ধতি চেষ্টা করুন :

public static int parseColor (String colorString)

অ্যান্ড্রয়েড ডকুমেন্টেশন থেকে :

সমর্থিত ফর্ম্যাটগুলি হ'ল: # আরআরজিবিবিবি #আআআআরআর জিবিবিবি 'লাল', 'নীল', 'সবুজ', 'কালো', 'সাদা', 'ধূসর', 'সায়ান', 'ম্যাজেন্টা', 'হলুদ', 'হালকা ধূসর', 'অন্ধকার '


4
যে কেউ #000মূল্যবোধ পার্স করতে জানেন ?
অ্যালেক্স Semeniuk

6
হ্যাঁ, কেবল করুন: if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }দয়া করে আমি ভুল হলে আমাকে সংশোধন করুন
xdevs23

6
@ Xdevs23 কোডে যুক্ত করতে, যদি এই শর্তটি পরিবর্তন করুন:if(colorString.length() == 4 && colorString[0] == '#')
জ্যাক জ্যাক

; MyView.setBackgroundColor (Color.parseColor ( "# 123456"): আপনার উত্তর ভাল কিভাবে এটা ব্যবহার করতে হবে আপনি শুধুমাত্র ফাংশন দেখাবেন না, কিন্তু
ইভন Marggraf

int red = colorString.charAt (1) == '0'? 0: 255; ইন্ট ব্লু = colorString.charAt (2) == '0'? 0: 255; int সবুজ = colorString.charAt (3) == '0'? 0: 255; রঙ.আরজিবি (লাল, নীল, সবুজ);
জিটিআইডি

253

চেষ্টা করুন:

myLayout.setBackgroundColor(Color.parseColor("#636161"));

4
যদি আপনি xamarin ব্যবহার করেন .. কোডটি এই Android.গ্রাফিক্স.ক্লোর.পার্সক্লোর ("# 636161") "পি" সাথে উপরের
ইগোর মন্টেইরো

38

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

ইন্টি থেকে রঙ

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

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

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

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

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

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

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

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

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

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

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>

আপনার যদি অতিরিক্ত রঙের প্রয়োজন হয় তবে অনুসরণ করার একটি ভাল অনুশীলন হ'ল এক্সএমএলে দুটি ধাপে আপনার রঙকে সংজ্ঞায়িত করা। প্রথমে হেক্স মানের রঙের নাম দিন এবং তারপরে আপনার অ্যাপ্লিকেশনটির এমন একটি উপাদানটির নাম দিন যা একটি নির্দিষ্ট রঙ পেতে পারে। এটি পরে রঙগুলি সামঞ্জস্য করা সহজ করে। আবার, এটি color.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

মন্তব্য


22

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

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

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

int color = 0xFFFF0000;

আমি স্ট্রিং রঙকে কীভাবে রূপান্তর করতে পারি = "80000000"; to int color =?
আশীষ সাহু

আমি মনে করি স্ট্রিং সংস্করণটি এমন হওয়া উচিত #80000000যা কোনও ক্ষেত্রে int সংস্করণ হবে int color = 0x80000000;। যদি এটি কাজ না করে তবে আরও বিশদ সহ একটি নতুন প্রশ্ন পোস্ট করুন যাতে আমার চেয়ে আরও বেশি লোক তা লক্ষ্য করবে। মনে রাখবেন #80000000একটি স্বচ্ছ কালো রঙ।
ব্রায়ান ফিল্ড

আমি জানি যে ইনট রঙটি হবে 0x80000000 তবে আমার সমস্যাটি এটি রূপান্তরিত করার উপায় ... তবে এখন আমি নিজের সমস্যাটি রং এর সাথে রঙ = পার্সক্লোর ("#" + "80000000") দিয়ে সমাধান করব; ... উত্তর দেওয়ার জন্য ধন্যবাদ।
আশীষ সাহু

আমি আপনার কোডটি ব্যবহার করে একটি ব্যতিক্রম পেয়েছি: java.lang.Number FormatException: অবৈধ int: "FFFF0000"
ত্রুটি 1337



12

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

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

প্রতিটি লাল, সবুজ এবং নীল রঙের জন্য 0-255 ব্যবহার করে রঙগুলি সেট করুন তারপরে আপনি যে কোনও জায়গায় রঙটি ব্যবহার করতে চান কেবল রঙের পরিবর্তে MY_COLOR লাগিয়ে দিন B নীল বা রঙিন RE

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


7

জামারিনে এটি ব্যবহার করুন

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

6

এক্সএমএল ফাইল সংরক্ষণ / মান / রং.এক্সএমএলে সংরক্ষণ করা হয়েছে:

<?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"/>

5

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


2
আমি আশা করব যে আপনার সেই তৃতীয় এফটি শূন্যের সাথে প্রতিস্থাপন করা উচিত। ওপিতে, আমি মনে করি প্রথম দুটি এফ অক্ষর অস্বচ্ছতা সেট করতে ব্যবহৃত হয়।
ব্রায়ান ফিল্ড

4

আপনি যদি আপনার এক্সএমএলে কোনও রঙ সংজ্ঞায়িত করেন এবং ব্যাকগ্রাউন্ড রঙ বা কিছু পরিবর্তন করতে এটি ব্যবহার করতে চান তবে এই এপিআইটি যা আপনি খুঁজছেন তা হ'ল:

 ((TextView) view).setBackgroundResource(R.drawable.your_color_here);

আমার নমুনায় আমি এটি টেস্টভিউয়ের জন্য ব্যবহার করেছি


0

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

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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.