উত্তর:
আপনি Configuration.screenLayout
বিটমাস্ক ব্যবহার করতে পারেন ।
উদাহরণ:
if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_LARGE) {
// on a large screen device ...
}
নীচের কোডটি টোস্ট হিসাবে পর্দার আকার প্রদর্শন করে উপরের উত্তরটি ছড়িয়ে দেয় ।
//Determine screen size
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
Toast.makeText(this, "Large screen", Toast.LENGTH_LONG).show();
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Toast.makeText(this, "Normal sized screen", Toast.LENGTH_LONG).show();
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Toast.makeText(this, "Small sized screen", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "Screen size is neither large, normal or small", Toast.LENGTH_LONG).show();
}
নীচের এই কোডটি টোস্ট হিসাবে পর্দার ঘনত্ব প্রদর্শন করে ।
//Determine density
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;
if (density == DisplayMetrics.DENSITY_HIGH) {
Toast.makeText(this, "DENSITY_HIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
else if (density == DisplayMetrics.DENSITY_MEDIUM) {
Toast.makeText(this, "DENSITY_MEDIUM... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
else if (density == DisplayMetrics.DENSITY_LOW) {
Toast.makeText(this, "DENSITY_LOW... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "Density is neither HIGH, MEDIUM OR LOW. Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
স্থির সহায়ক পদ্ধতি হিসাবে জেফ গিলফেল্টের উত্তর:
private static String getSizeName(Context context) {
int screenLayout = context.getResources().getConfiguration().screenLayout;
screenLayout &= Configuration.SCREENLAYOUT_SIZE_MASK;
switch (screenLayout) {
case Configuration.SCREENLAYOUT_SIZE_SMALL:
return "small";
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
return "normal";
case Configuration.SCREENLAYOUT_SIZE_LARGE:
return "large";
case 4: // Configuration.SCREENLAYOUT_SIZE_XLARGE is API >= 9
return "xlarge";
default:
return "undefined";
}
}
private String getDeviceDensity() {
int density = mContext.getResources().getDisplayMetrics().densityDpi;
switch (density)
{
case DisplayMetrics.DENSITY_MEDIUM:
return "MDPI";
case DisplayMetrics.DENSITY_HIGH:
return "HDPI";
case DisplayMetrics.DENSITY_LOW:
return "LDPI";
case DisplayMetrics.DENSITY_XHIGH:
return "XHDPI";
case DisplayMetrics.DENSITY_TV:
return "TV";
case DisplayMetrics.DENSITY_XXHIGH:
return "XXHDPI";
case DisplayMetrics.DENSITY_XXXHIGH:
return "XXXHDPI";
default:
return "Unknown";
}
}
উপরের উত্তরের জন্য ধন্যবাদ, যা আমাকে অনেক সাহায্য করেছে :-) তবে তাদের (আমার মতো) এখনও অ্যান্ড্রয়েড 1.5 সমর্থন করতে বাধ্য করা হয়েছে আমরা পিছনের সামঞ্জস্যের জন্য জাভা প্রতিবিম্ব ব্যবহার করতে পারি:
Configuration conf = getResources().getConfiguration();
int screenLayout = 1; // application default behavior
try {
Field field = conf.getClass().getDeclaredField("screenLayout");
screenLayout = field.getInt(conf);
} catch (Exception e) {
// NoSuchFieldException or related stuff
}
// Configuration.SCREENLAYOUT_SIZE_MASK == 15
int screenType = screenLayout & 15;
// Configuration.SCREENLAYOUT_SIZE_SMALL == 1
// Configuration.SCREENLAYOUT_SIZE_NORMAL == 2
// Configuration.SCREENLAYOUT_SIZE_LARGE == 3
// Configuration.SCREENLAYOUT_SIZE_XLARGE == 4
if (screenType == 1) {
...
} else if (screenType == 2) {
...
} else if (screenType == 3) {
...
} else if (screenType == 4) {
...
} else { // undefined
...
}
Configuration
ক্লাসের ধ্রুবকগুলিকে উল্লেখ করতে পারেন । এগুলি স্থিতিশীল চূড়ান্ত মান যা সংকলনের সময় অন্তর্ভুক্ত করা হবে (এটি তাদের প্রকৃত মান দ্বারা প্রতিস্থাপিত হবে), সুতরাং আপনার কোডটি প্ল্যাটফর্মের পুরানো সংস্করণগুলিতে ভঙ্গ হবে না।
targetSdkVersion
সর্বশেষ প্রকাশে তাদের সেট করে ।
যদি আপনি সহজেই অ্যান্ড্রয়েড ডিভাইসের স্ক্রিনের ঘনত্ব এবং আকার জানতে চান তবে আপনি এই নিখরচায় অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন (কোনও অনুমতি প্রয়োজন নেই): https://market.android.com/details?id=com.jotabout.screeninfo
এক্সরেজ স্ক্রিন এবং এক্স..উচ্চ ঘনত্বের জন্য পরীক্ষা করা দরকার? এটি নির্বাচিত উত্তর থেকে পরিবর্তিত কোড।
//Determine screen size
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();
} else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Toast.makeText(this, "Normal sized screen" , Toast.LENGTH_LONG).show();
} else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Toast.makeText(this, "Small sized screen" , Toast.LENGTH_LONG).show();
} else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
Toast.makeText(this, "XLarge sized screen" , Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
}
//Determine density
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;
if (density==DisplayMetrics.DENSITY_HIGH) {
Toast.makeText(this, "DENSITY_HIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_MEDIUM) {
Toast.makeText(this, "DENSITY_MEDIUM... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_LOW) {
Toast.makeText(this, "DENSITY_LOW... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_XHIGH) {
Toast.makeText(this, "DENSITY_XHIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_XXHIGH) {
Toast.makeText(this, "DENSITY_XXHIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
} else if (density==DisplayMetrics.DENSITY_XXXHIGH) {
Toast.makeText(this, "DENSITY_XXXHIGH... Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Density is neither HIGH, MEDIUM OR LOW. Density is " + String.valueOf(density), Toast.LENGTH_LONG).show();
}
এখানে টম ম্যাকফারলিনের উত্তরের একটি জামারিন.এন্ড্রয়েড সংস্করণ রয়েছে
//Determine screen size
if ((Application.Context.Resources.Configuration.ScreenLayout & ScreenLayout.SizeMask) == ScreenLayout.SizeLarge) {
Toast.MakeText (this, "Large screen", ToastLength.Short).Show ();
} else if ((Application.Context.Resources.Configuration.ScreenLayout & ScreenLayout.SizeMask) == ScreenLayout.SizeNormal) {
Toast.MakeText (this, "Normal screen", ToastLength.Short).Show ();
} else if ((Application.Context.Resources.Configuration.ScreenLayout & ScreenLayout.SizeMask) == ScreenLayout.SizeSmall) {
Toast.MakeText (this, "Small screen", ToastLength.Short).Show ();
} else if ((Application.Context.Resources.Configuration.ScreenLayout & ScreenLayout.SizeMask) == ScreenLayout.SizeXlarge) {
Toast.MakeText (this, "XLarge screen", ToastLength.Short).Show ();
} else {
Toast.MakeText (this, "Screen size is neither large, normal or small", ToastLength.Short).Show ();
}
//Determine density
DisplayMetrics metrics = new DisplayMetrics();
WindowManager.DefaultDisplay.GetMetrics (metrics);
var density = metrics.DensityDpi;
if (density == DisplayMetricsDensity.High) {
Toast.MakeText (this, "DENSITY_HIGH... Density is " + density, ToastLength.Long).Show ();
} else if (density == DisplayMetricsDensity.Medium) {
Toast.MakeText (this, "DENSITY_MEDIUM... Density is " + density, ToastLength.Long).Show ();
} else if (density == DisplayMetricsDensity.Low) {
Toast.MakeText (this, "DENSITY_LOW... Density is " + density, ToastLength.Long).Show ();
} else if (density == DisplayMetricsDensity.Xhigh) {
Toast.MakeText (this, "DENSITY_XHIGH... Density is " + density, ToastLength.Long).Show ();
} else if (density == DisplayMetricsDensity.Xxhigh) {
Toast.MakeText (this, "DENSITY_XXHIGH... Density is " + density, ToastLength.Long).Show ();
} else if (density == DisplayMetricsDensity.Xxxhigh) {
Toast.MakeText (this, "DENSITY_XXXHIGH... Density is " + density, ToastLength.Long).Show ();
} else {
Toast.MakeText (this, "Density is neither HIGH, MEDIUM OR LOW. Density is " + density, ToastLength.Long).Show ();
}
এই ফাংশনটি লেআউটসাইজএলটিস্ট ব্যবহার করুন (স্ক্রিন সাইজ)
ছোট স্ক্রিনটি পরীক্ষা করতে, কমপক্ষে 320x426 ডিপি এবং উপরে রেটসোর্সগুলি () get get get
সাধারণ স্ক্রিনটি পরীক্ষা করতে, কমপক্ষে 320x470 ডিপি এবং উপরে রাইসোর্সগুলি () C
বড় স্ক্রিনটি চেক করতে, কমপক্ষে 480x640 ডিপি এবং উপরে রাইসোর্সগুলি () get
অতিরিক্ত বড় স্ক্রিনটি পরীক্ষা করতে, কমপক্ষে 720x960 ডিপি এবং উপরের getRes્રોসগুলি () get
2018 এ, যদি আপনার কোটলিনে জেফের উত্তর প্রয়োজন হয় তবে এটি এখানে:
private fun determineScreenSize(): String {
// Thanks to https://stackoverflow.com/a/5016350/2563009.
val screenLayout = resources.configuration.screenLayout
return when {
screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK == Configuration.SCREENLAYOUT_SIZE_SMALL -> "Small"
screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK == Configuration.SCREENLAYOUT_SIZE_NORMAL -> "Normal"
screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK == Configuration.SCREENLAYOUT_SIZE_LARGE -> "Large"
screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK == Configuration.SCREENLAYOUT_SIZE_XLARGE -> "Xlarge"
screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK == Configuration.SCREENLAYOUT_SIZE_UNDEFINED -> "Undefined"
else -> error("Unknown screenLayout: $screenLayout")
}
}
আপনি কি স্ট্রিং রিসোর্স এবং এনামগুলি ব্যবহার করে এটি করতে পারবেন না? আপনি একটি স্ট্রিং রিসোর্সটি সংজ্ঞায়িত করতে পারেন যার স্ক্রিন আকারের নাম ছিল যেমন ছোট, মিডিয়াম বা বড়। তারপরে এনামের উদাহরণ তৈরি করতে আপনি স্ট্রিং রিসোর্সের মানটি ব্যবহার করতে পারেন।
আপনার যত্ন নেওয়া বিভিন্ন স্ক্রিন আকারের জন্য আপনার কোডে একটি এনাম সংজ্ঞা দিন।
public Enum ScreenSize {
SMALL,
MEDIUM,
LARGE,;
}
একটি স্ট্রিং রিসোর্স সংজ্ঞায়িত করুন, স্ক্রীনসাইজ বলুন, যার মান হয় ছোট, মিডিয়াম বা লার্জ either
<string name="screensize">MEDIUM</string>
screensize
আপনার যত্নশীল প্রতিটি মাত্রায় একটি স্ট্রিং রিসোর্সে একটি অনুলিপি রাখুন । <string name="screensize">MEDIUM</string>
মান-sw600dp / strings.xml এবং মান-মাঝারি / <string name="screensize">LARGE</string>
স্ট্রিং.এক্সএমএল যেতে হবে এবং sw720dp / strings.xml এবং মান-বৃহত / স্ট্রিং.এক্সএমএল যেতে হবে।ScreenSize size = ScreenSize.valueOf(getReources().getString(R.string.screensize);
আপনার কোডটিতে এই কোডটি অনুলিপি করুন এবং আটকান Activity
এবং এটি কার্যকর করা হলে Toast
এটি ডিভাইসের স্ক্রিন আকারের বিভাগ হবে।
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
String toastMsg;
switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
toastMsg = "Large screen";
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
toastMsg = "Normal screen";
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
toastMsg = "Small screen";
break;
default:
toastMsg = "Screen size is neither large, normal or small";
}
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();