উত্তর:
ডিসপ্লে স্কেল ফ্যাক্টরটি ব্যবহার করে আপনাকে এটিকে ডিপিএস থেকে পিক্সেলে রূপান্তর করতে হবে।
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
dp
পারেন px
? ধন্যবাদ।
আমি জানি এটি একটি পুরানো প্রশ্ন তবে আমি এই রূপান্তরটি করার খুব সুন্দর উপায় খুঁজে পেয়েছি।
জাভা
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65, getResources().getDisplayMetrics());
Kotlin
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 65f, resources.displayMetrics)
65
উপরে ডিপি মান আপনাকে পিএক্স রূপান্তরিত চাই
আপনার প্রয়োজনীয়তার দিকে তাকালে বিকল্প সমাধানও রয়েছে। দেখে মনে হচ্ছে আপনি সংকলনের সময় ডিপি-র মাত্রাগুলি জানেন, তাই আপনি সংস্থানগুলিতে একটি মাত্রিক এন্ট্রি যুক্ত করতে পারেন। তারপরে আপনি দ্বিমাত্রিক এন্ট্রিটি জিজ্ঞাসা করতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে এই কলটিতে পিক্সেলগুলিতে রূপান্তরিত হবে:
final float inPixels= mActivity.getResources().getDimension(R.dimen.dimen_entry_in_dp);
এবং আপনার dimens.xML এ থাকবে:
<dimen name="dimen_entry_in_dp">72dp</dimen>
এই ধারণাটি প্রসারিত করে, আপনি কেবলমাত্র 1 ডিপি বা 1 এস্পের মানকে একটি মাত্রিক এন্ট্রি হিসাবে সঞ্চয় করতে পারেন এবং মানটি জিজ্ঞাসা করতে পারেন এবং এটি একটি গুণক হিসাবে ব্যবহার করতে পারেন। এই পদ্ধতির ব্যবহার করে আপনি গণিতের স্টাফ থেকে কোডটি উত্তোলন করবেন এবং গণনা সম্পাদনের জন্য লাইব্রেরিতে নির্ভর করবেন।
সবচেয়ে সহজ উপায় (এবং এপিআই 1 থেকে এমনকি কাজ করে) যা পরীক্ষিত তা হ'ল:
getResources().getDimensionPixelSize(R.dimen.example_dimen);
নথি থেকে:
কাঁচা পিক্সেলের আকার হিসাবে ব্যবহারের জন্য কোনও নির্দিষ্ট সংস্থান আইডির একটি মাত্রিক পুনরুদ্ধার করুন। এটি getDimesion (int) এর সমান, প্রত্যাবর্তিত মানকে আকার হিসাবে ব্যবহারের জন্য পূর্ণসংখ্যার পিক্সেলে রূপান্তর করা ছাড়া। একটি আকার রূপান্তরের মধ্যে বেস মানটি গোল করা হয় এবং একটি শূন্য-ভিত্তিক মান কমপক্ষে একটি পিক্সেল আকারের হয় তা নিশ্চিত করে।
হ্যাঁ এটি মানটিকে গোল করে তবে এটি খুব খারাপ নয় (এলডিপিআই খুব সাধারণ না হলে কেবল এইচডিপিআই এবং এলডিপিআই ডিভাইসে অদ্ভুত মানগুলিতে কিছুটা মূল্য যুক্ত করতে হবে) আমি একটি এক্সএক্সএইচডিপি ডিভাইসে পরীক্ষা করেছিলাম যা 4 ডিপি রূপান্তর করে 16 (পিক্সেল) করে এবং এটি হ'ল সত্য।