উত্তর:
density = getResources().getDisplayMetrics().density;
// return 0.75 if it's LDPI
// return 1.0 if it's MDPI
// return 1.5 if it's HDPI
// return 2.0 if it's XHDPI
// return 3.0 if it's XXHDPI
// return 4.0 if it's XXXHDPI
আপনি এতে স্ক্রিনের ঘনত্ব পরীক্ষা করতে পারেন:
switch (getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
// ...
break;
case DisplayMetrics.DENSITY_MEDIUM:
// ...
break;
case DisplayMetrics.DENSITY_HIGH:
// ...
break;
case DisplayMetrics.DENSITY_XHIGH:
// ...
break;
}
সম্পাদনা এডিট সচেতন থাকুন যেহেতু অ্যান্ড্রয়েডের বিকশিত হওয়ার সাথে সাথে অন্যান্য মানগুলিও অন্তর্ভুক্ত করা উচিত switch
। এই সম্পাদনা হিসাবে, এটি অন্তর্ভুক্ত DisplayMetrics.DENSITY_TV
এবং DisplayMetrics.DENSITY_XXHIGH
। সর্বশেষ তথ্যের জন্য ডক্সের সাথে পরামর্শ করুন ; আমি এই উত্তর বজায় রাখতে বিরক্ত করব না।
density
স্টিডির পরামর্শ অনুযায়ী ব্যবহার করতে পারেন ))
DENSITY_XXHIGH
। আমি ভবিষ্যতের সমস্ত মামলা কভার করার জন্য উত্তরটিতে একটি দাবি অস্বীকার করেছি। :)
2018 হিসাবে, আপনি নীচের পদ্ধতিটি ব্যবহার করতে পারেন -
public static String getDeviceDensityString(Context context) {
switch (context.getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
return "ldpi";
case DisplayMetrics.DENSITY_MEDIUM:
return "mdpi";
case DisplayMetrics.DENSITY_TV:
case DisplayMetrics.DENSITY_HIGH:
return "hdpi";
case DisplayMetrics.DENSITY_260:
case DisplayMetrics.DENSITY_280:
case DisplayMetrics.DENSITY_300:
case DisplayMetrics.DENSITY_XHIGH:
return "xhdpi";
case DisplayMetrics.DENSITY_340:
case DisplayMetrics.DENSITY_360:
case DisplayMetrics.DENSITY_400:
case DisplayMetrics.DENSITY_420:
case DisplayMetrics.DENSITY_440:
case DisplayMetrics.DENSITY_XXHIGH:
return "xxhdpi";
case DisplayMetrics.DENSITY_560:
case DisplayMetrics.DENSITY_XXXHIGH:
return "xxxhdpi";
}
}
তবে @ টেড পয়েন্ট হিসাবে সর্বদা ব্যবহারের আগে সরকারী দস্তাবেজের সাথে পরামর্শ করুন
উপরের উত্তরগুলি থেকে, আমি তাদের একত্রিত করে নীচের ফাংশনটি তৈরি করেছি:
public static String getDeviceDensity(Context context){
String deviceDensity = "";
switch (context.getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
deviceDensity = 0.75 + " ldpi";
break;
case DisplayMetrics.DENSITY_MEDIUM:
deviceDensity = 1.0 + " mdpi";
break;
case DisplayMetrics.DENSITY_HIGH:
deviceDensity = 1.5 + " hdpi";
break;
case DisplayMetrics.DENSITY_XHIGH:
deviceDensity = 2.0 + " xhdpi";
break;
case DisplayMetrics.DENSITY_XXHIGH:
deviceDensity = 3.0 + " xxhdpi";
break;
case DisplayMetrics.DENSITY_XXXHIGH:
deviceDensity = 4.0 + " xxxhdpi";
break;
default:
deviceDensity = "Not found";
}
return deviceDensity;
}
এখন, আপনি কোন ডিভাইসে ঘনত্বের তথ্য পেতে চান এবং এটি কোন ফোল্ডারটি ব্যবহার করা হবে, কেবল সেই ক্রিয়াকলাপে উপরের পদ্ধতিটি যুক্ত করুন এবং অনক্রিটটিতে নীচের লাইনটি যুক্ত করুন
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Log.d("Screen Density: ", Helper.getDeviceDensity(this));
}
নেটিভ রিএ্যাক্টের জন্য বর্তমানে কোন আকারটি ডিভাইসে রয়েছে তা পরীক্ষা করতে
import { PixelRatio } from 'react-native';
switch(PixelRatio.get()) {
case 1:
return "mdpi";
case 1.5:
return "hdpi";
case 2:
return "xhdpi";
case 3:
return "xxhdpi";
case 3.5:
return "xxxhdpi";
}
PixelRatio.get()
অ্যান্ড্রয়েড সেটিংসে প্রদর্শন আকারের উপর নির্ভর করে এবং dpi এর উপর নির্ভর করে মানগুলির একটি ব্যাপ্তি ফিরে আসবে। এই মানগুলি আপনি যে সঠিক মানগুলি এড়িয়ে গেছেন তার সাথে সহাবস্থান করবে না।
কিছু ডিভাইসে (খনিটি গ্যালাক্সি ট্যাব 3), ঘনত্ব এবং ঘনত্ব উভয়ই ডিপিআই 1.33 (ঘনত্ব), 213 (ঘনত্ব ডিপিআই) এর মতো অদ্ভুত মানগুলি ফেরত দেয়। সুতরাং আমার সমাধান হ'ল এই পতাকাটি যুক্ত করা:
<আইটেম টাইপ = "বুল" নাম = "is_mdpi"> [bool] </item>
<আইটেম টাইপ = "বুল" নাম = "is_hdpi"> [bool] </item>
<আইটেম টাইপ = "বুল" নাম = " is_xhdpi "> [bool] </item>
<আইটেম টাইপ =" বুল "নাম =" is_xxhdpi "> [bool] </item>
4 টি মানসমূহ। এক্সএমএল ফাইলগুলিতে, এগুলি সম্পর্কিত রেজোলিউশন / মানসমূহ - [এক্সএক্সএক্সএক্স] / ফোল্ডারগুলির অধীনে রাখুন।