হেক্স রঙের মান (# fffff )টিকে পূর্ণসংখ্যার মানতে রূপান্তর করুন


89

আমি একটি সার্ভার থেকে হেক্স রঙের মানগুলি পেয়েছি (এই ফর্মটিতে #xxxxxx, উদাহরণস্বরূপ #000000কালো)

আমি কীভাবে এটি একটি পূর্ণসংখ্যার মানতে রূপান্তর করব?

আমি Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))আরও বেশি হেক্সটাস্টিক 0x000000ফলাফল পাওয়ার জন্য চেষ্টা করেছিলাম , তবে এটি intএখানে কোনও হিসাবে ব্যাখ্যা করা হয় না , অন্য কোনও পরামর্শ?

আমি একটি ত্রুটি পেয়েছি: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

আমি তাদের setBackgroundColor(int color)ফাংশনটির জন্য অ্যান্ড্রয়েড এসডিকে ব্যবহার করছি , যা আপনি অনুমান করেছেন - একটি পূর্ণসংখ্যার রঙের মান value

এটি এই প্রশ্নের বিরোধী: অ্যান্ড্রয়েডে কোনও রঙ পূর্ণসংখ্যাটিকে হেক্স স্ট্রিংয়ে রূপান্তর করবেন কীভাবে?


কোনও কারণে আমি পোস্ট করতে পারছি না ... আপনি প্রায় valueOfরয়েছেন , তবে আপনার দ্বি-যুক্তি পদ্ধতি দরকার যেখানে আপনি স্ট্রিং ইনপুট (অবশ্যই # ছাড়াই) এবং র‌ডিক্স নির্দিষ্ট করেন যা বেসটি নির্দিষ্ট করে। Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) এটি কোনও পূর্ণসংখ্যার বেস দিয়ে করা যেতে পারে! download.oracle.com/javase/6/docs/api/java/lang/… , int)
ty1824

হ্যাঁ, আমি আমার প্রতিক্রিয়াও পোস্ট করতে পারিনি। মাইক স্যামুয়েল বেশ কিছু বললাম যা আমি বলার অপেক্ষা রাখে না।
এএম বিক্রয় করুন

উত্তর:


184

আসল উত্তরটি হ'ল:

Color.parseColor(myPassedColor)অ্যান্ড্রয়েড এ, myPassedColorহচ্ছে hexমত মান #000বা #000000বা #00000000

যাইহোক, এই ফাংশন সাধারণভাবে সংক্ষেপে হেক্স মান সমর্থন করে না যেমন #000


9
দুর্ভাগ্যক্রমে এর মতো মানকে বিশ্লেষণ করে না #000ডকুমেন্টেশন
অ্যালেক্স Semeniuk

@ সিকিউএম কীভাবে শর্টহ্যান্ড হেক্স রঙ পার্স করবেন, পছন্দ করুন #ccc। অন্য কোন উপায আছে কি?
কবিতা_পি

32

উত্তরটি হ'ল সহজ ছেলেরা, অ্যান্ড্রয়েডে আপনি যদি হেক্স রঙকে আন্তঃরূপে রূপান্তর করতে চান তবে কেবল অ্যান্ড্রয়েড রঙের ক্লাস ব্যবহার করুন , উদাহরণ হিসাবে নীচে দেখানো হয়েছে

এটি হালকা ধূসর রঙের জন্য

Color.parseColor("#a8a8a8");

এটি স্থির করে এবং আপনি আপনার ফলাফল পাবেন।


এবং কীভাবে ব্যবহার করবেন সে সম্পর্কে এটি পরিষ্কার করুন: someText.setText कलर (রঙ.parseColor ("# f9e6ff"))
ব্রায়ান এম

15
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

4
এই পরামর্শের জন্য ধন্যবাদ, আমি এখনই এটির কোনও উপকার করার চেষ্টা করিনি, এবং এটি প্রমাণিত হয়েছে যে একটি অন্তর্ভুক্ত অ্যান্ড্রয়েড ফাংশনই একমাত্র রঙের ফলাফল যা কাজ করে, যদিও তারা উভয়ই প্রত্যাবর্তন করে। Color.parseColor (myPassed Color)) আমি ভাবিনি এটি একটি অ্যান্ড্রয়েড নির্দিষ্ট সমস্যা ছিল তবে এটি পরিণত হয়েছিল
CQM

4
আমি জানি না কেন লোকেরা এটিকে অগ্রাহ্য করেছিল; এটা কাজ করে না !! এখানে রঙগুলি 32 টি বিটে সংরক্ষণ করা হচ্ছে যাতে এগুলি মুদ্রণ তাদের দীর্ঘস্থায়ী প্রদর্শন করে। পার্সিয়ান্ট একটি নেতিবাচক বোঝাতে একটি সুস্পষ্ট for - 'সন্ধান করে এবং ইনস বা লম্বা জন্য সাইন বিটকে সম্মান করে না। সুতরাং এটি ভুল নম্বর দেবে।
খ্রিস্টান চ্যাপম্যান

4
@ এঙ্কডেগ্রি, ওপিকে উদ্ধৃত করার জন্য, "আমি একটি সার্ভারের কাছ থেকে হেক্স রঙের মানগুলি গ্রহণ করছি (এই আকারে, # এমএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স" তাই ওপি যে রঙগুলি ব্যবহার করে তা 32 বিট নয় 24 বিট; কোনও আলফা চ্যানেল নেই
মাইক স্যামুয়েল

4
@ AllDayAmasing, '#' হেক্স ডিজিট, সাইন বা দশমিক বিভাজক নয় তাই parseIntএটি যদি ইনপুটটিতে খুঁজে পায় তবে ব্যর্থ হবে will
মাইক স্যামুয়েল

আমার ভুল, আমি যা করছি তার মধ্যে আমি এতটাই সংযুক্ত হয়েছি যে আমি তা দ্রুত পড়ে দেখেছি parseColor()। আপনি খুব সঠিক।
অলডায়আমাজিং

7

আমার একই সমস্যা রয়েছে যা আমি আকারে কিছু রঙ পেয়েছি #AAAAAAএবং আমি এটিকে এমন ফর্মের মধ্যে রূপান্তর করতে চাই যা অ্যান্ড্রয়েড ব্যবহার করতে পারে। আমি দেখেছি যে আপনি কেবল 0xFFAAAAAAএমনটি ব্যবহার করতে পারেন যাতে অ্যান্ড্রয়েড স্বয়ংক্রিয়ভাবে রঙটি বলতে পারে। প্রথমে মান FFবলার বিষয়টি লক্ষ্য করুন alpha। আশা করি এটা সাহায্য করবে



3

আমিও একই সমস্যায় পড়ছিলাম। এইভাবে আমি এটি সমাধান করতে সক্ষম হয়েছি। সিকিউএম যেমন বলেছে, কালার.পার্সক্লোর () ব্যবহার করা এই সমস্যাটির একটি ভাল সমাধান।

আমি যে কোডটি ব্যবহার করেছি তা এখানে:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

এই ক্ষেত্রে আমার টার্গেটটি ছিল আমি যখন আমার পছন্দগুলি (color_prefs) থেকে রঙ নির্বাচন পরিবর্তন করি তখন বাটনের পাঠ্য রঙ (বাটন_সি) পরিবর্তন করা।



1

স্ট্রিংয়ের অংশীদারি পছন্দসমূহের কোড কোড পান তারপরে পূর্ণসংখ্যায় রূপান্তর করুন এবং লেআউট-পটভূমির রঙ যুক্ত করুন:

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

0

এটি ব্যবহার করে দেখুন, আপনার সংস্থানগুলিতে অঙ্কনযোগ্য তৈরি করুন ...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>

তারপরে ব্যবহার করুন ...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

রঙ সহ ... "#FFFFFF"

যদি রঙ স্বচ্ছ হয় ... সেটআল্ফা

mView1.setAlpha(x); এক্স ভাসা 0-1 ইজ (0.9f) সহ

শুভকামনা

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