সেটউইথ (ইন্ট পিক্সেল) ইউনিট হিসাবে ডিভাইস স্বাধীন পিক্সেল বা শারীরিক পিক্সেল ব্যবহার করে? উদাহরণস্বরূপ, সেটউইথ (100) ভিউয়ের প্রস্থকে 100 ডিপ বা 100 পিক্সে সেট করে?
ধন্যবাদ
সেটউইথ (ইন্ট পিক্সেল) ইউনিট হিসাবে ডিভাইস স্বাধীন পিক্সেল বা শারীরিক পিক্সেল ব্যবহার করে? উদাহরণস্বরূপ, সেটউইথ (100) ভিউয়ের প্রস্থকে 100 ডিপ বা 100 পিক্সে সেট করে?
ধন্যবাদ
উত্তর:
এটি পিক্সেল ব্যবহার করে তবে আমি নিশ্চিত যে আপনি কীভাবে পরিবর্তে ডপগুলি ব্যবহার করবেন তা ভাবছেন। উত্তর আছে TypedValue.applyDimension()
। কোডগুলিতে ডিপগুলি কীভাবে পিক্সে রূপান্তর করতে হয় তার একটি উদাহরণ এখানে:
// Converts 14 dip into its equivalent px
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
কোডে অবিচ্ছিন্ন সংখ্যক ডিআইপি প্রাপ্তির সঠিক উপায়টি হ'ল ডিপি মানগুলি যুক্ত একটি রিসোর্স এক্সএমএল ফাইল তৈরি করা যেমন:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="image_width">100dp</dimen>
<dimen name="image_height">75dp</dimen>
</resources>
তারপরে আপনার কোডটিতে রিসোর্সটি উল্লেখ করুন:
float width = getResources().getDimension(R.dimen.image_width));
float height = getResources().getDimension(R.dimen.image_height));
আপনি যে ফ্লোটটি ফিরে এসেছেন তা সেই অনুযায়ী ডিভাইসের পিক্সেল ঘনত্বের জন্য মাপানো হবে এবং তাই আপনাকে পুরো অ্যাপ্লিকেশন জুড়ে কোনও রূপান্তর পদ্ধতির প্রতিরূপ তৈরি করার দরকার নেই।
পদ্ধতি সেটউইথ (১০০), প্রস্থ হিসাবে ১০০ পিক্সেট সেট করুন (ডিপিতে নয়)। সুতরাং আপনাকে বিভিন্ন অ্যান্ড্রয়েড ফোনে প্রস্থের বিভিন্নতার বিভিন্ন সমস্যার মুখোমুখি হতে পারে o সুতরাং পিক্সেলের পরিবর্তে ডিপিতে পরিমাপ ব্যবহার করুন sample নমুনা প্রস্থের ডিপিতে পরিমাপ পেতে নীচের কোডটি ব্যবহার করুন = 300px এবং উচ্চতা = 400px।
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics());
int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());
float dps = 100;
float pxs = dps * getResources().getDisplayMetrics().density;
অবশ্যই পিক্সেল, পদ্ধতিটি প্যারামিটার হিসাবে পিক্সেল চাইছে।
আমার উপরের উত্তরের উপর ভিত্তি করে যা আমার পক্ষে সূক্ষ্ম কাজ করে, আমি কিছু সহায়ক পদ্ধতি উত্পন্ন করি, পুরো প্রকল্পে এগুলি ব্যবহার করার জন্য কেবল সেগুলি আপনার ব্যবহারগুলিতে যুক্ত করুন।
// value in DP
public static int getValueInDP(Context context, int value){
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, context.getResources().getDisplayMetrics());
}
public static float getValueInDP(Context context, float value){
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, context.getResources().getDisplayMetrics());
}
// value in PX
public static int getValueInPixel(Context context, int value){
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, value, context.getResources().getDisplayMetrics());
}
public static float getValueInPixel(Context context, float value){
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, value, context.getResources().getDisplayMetrics());
}