
ফোল্ডেবলের জন্য অ্যাপ্লিকেশন তৈরি করার সময় ডেভেলপাররা প্রায়শই অনন্য সমস্যার সম্মুখীন হন—বিশেষ করে Samsung Trifold বা আসল Pixel Fold-এর মতো ডিভাইস, যা ল্যান্ডস্কেপ ফর্ম্যাটে খোলে (rotation_0 = landscape)। ডেভেলপারদের ভুলগুলির মধ্যে রয়েছে:
- ডিভাইস ওরিয়েন্টেশন সম্পর্কে ভুল ধারণা
- উপেক্ষিত ব্যবহারের ঘটনাগুলি
- কনফিগারেশন পরিবর্তন জুড়ে মান পুনঃগণনা বা ক্যাশে করতে ব্যর্থতা
নির্দিষ্ট ডিভাইস-সম্পর্কিত সমস্যাগুলির মধ্যে রয়েছে:
- কভার এবং অভ্যন্তরীণ ডিসপ্লের মধ্যে ডিভাইসের স্বাভাবিক অভিযোজনের অমিল (rotation_0 = portrait এর উপর ভিত্তি করে অনুমান), যার ফলে অ্যাপগুলি ভাঁজ এবং আনফোল্ড যাত্রায় ব্যর্থ হয়।
- বিভিন্ন স্ক্রিন ঘনত্ব এবং ভুল ঘনত্ব কনফিগারেশন পরিবর্তন হ্যান্ডলিং
- ক্যামেরা সেন্সরের প্রাকৃতিক অভিযোজনের উপর নির্ভরতার কারণে ক্যামেরা প্রিভিউ সমস্যা দেখা দিয়েছে
ভাঁজযোগ্য ডিভাইসগুলিতে উচ্চমানের ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য, নিম্নলিখিত গুরুত্বপূর্ণ ক্ষেত্রগুলিতে মনোযোগ দিন:
- অ্যাপটির প্রকৃত স্ক্রিন এরিয়ার উপর ভিত্তি করে অ্যাপের ওরিয়েন্টেশন নির্ধারণ করুন, ডিভাইসের ফিজিক্যাল ওরিয়েন্টেশনের উপর নয়।
- ডিভাইসের ওরিয়েন্টেশন এবং আকৃতির অনুপাত সঠিকভাবে পরিচালনা করতে, পার্শ্ববর্তী প্রিভিউ এড়াতে এবং প্রসারিত বা ক্রপ করা ছবি প্রতিরোধ করতে ক্যামেরা প্রিভিউ আপডেট করুন।
- ডিভাইস ভাঁজ করা বা আনফোল্ড করার সময় অ্যাপের ধারাবাহিকতা বজায় রাখুন, হয়
ViewModelবা অনুরূপ পদ্ধতির সাহায্যে অবস্থা ধরে রাখুন, অথবা স্ক্রিনের ঘনত্বের পরিবর্তন এবং ওরিয়েন্টেশন পরিবর্তনগুলি ম্যানুয়ালি পরিচালনা করুন, যা অ্যাপ পুনরায় চালু হওয়া বা অবস্থার ক্ষতি এড়ায়। - মোশন সেন্সর ব্যবহার করে এমন অ্যাপগুলির জন্য, স্ক্রিনের বর্তমান ওরিয়েন্টেশনের সাথে সামঞ্জস্যপূর্ণ স্থানাঙ্ক সিস্টেমটি সামঞ্জস্য করুন এবং rotation_0 = portrait এর উপর ভিত্তি করে অনুমান এড়িয়ে চলুন, যা ব্যবহারকারীর সুনির্দিষ্ট মিথস্ক্রিয়া নিশ্চিত করে।
অভিযোজিত তৈরি করুন
যদি আপনার অ্যাপটি ইতিমধ্যেই অভিযোজিত হয় এবং বড় স্ক্রিন অ্যাপের মান নির্দেশিকাগুলিতে বর্ণিত অপ্টিমাইজড লেভেল (স্তর 2) মেনে চলে, তাহলে অ্যাপটি ফোল্ডেবল ডিভাইসগুলিতে ভালভাবে কাজ করবে। অন্যথায়, ট্রাইফোল্ড এবং ল্যান্ডস্কেপ ফোল্ডেবলের নির্দিষ্ট বিবরণ দুবার পরীক্ষা করার আগে, নিম্নলিখিত মৌলিক অ্যান্ড্রয়েড অভিযোজিত ডেভেলপমেন্ট ধারণাগুলি পর্যালোচনা করুন।
অভিযোজিত লেআউট
আপনার UI-কে কেবল বিভিন্ন স্ক্রিন আকারই নয়, বরং অ্যাসপেক্ট রেশিওর রিয়েল-টাইম পরিবর্তনগুলিও পরিচালনা করতে হবে, যেমন মাল্টি-উইন্ডো বা ডেস্কটপ উইন্ডো মোডগুলি খোলা এবং প্রবেশ করা। কীভাবে করবেন সে সম্পর্কে আরও নির্দেশিকা জানতে অভিযোজিত লেআউট সম্পর্কে দেখুন:
- অভিযোজিত লেআউট ডিজাইন এবং বাস্তবায়ন করুন
- উইন্ডোর আকারের উপর ভিত্তি করে আপনার অ্যাপের প্রাথমিক নেভিগেশন সামঞ্জস্য করুন
- আপনার অ্যাপের UI মানিয়ে নিতে উইন্ডো সাইজ ক্লাস ব্যবহার করুন
- জেটপ্যাক এপিআই ব্যবহার করে তালিকা-বিস্তারিতের মতো ক্যানোনিকাল লেআউটের বাস্তবায়ন সহজ করুন।

জানালার আকারের ক্লাস
ল্যান্ডস্কেপ ফোল্ডেবল এবং ট্রাইফোল্ড সহ ফোল্ডেবল ডিভাইসগুলি তাৎক্ষণিকভাবে কমপ্যাক্ট, মাঝারি এবং প্রসারিত উইন্ডো আকারের ক্লাসগুলির মধ্যে স্থানান্তরিত হতে পারে। এই ক্লাসগুলি বোঝা এবং বাস্তবায়ন নিশ্চিত করে যে আপনার অ্যাপটি বর্তমান ডিভাইসের অবস্থার জন্য সঠিক নেভিগেশন উপাদান এবং সামগ্রীর ঘনত্ব প্রদর্শন করে।

নিচের উদাহরণে Material 3 অ্যাডাপটিভ লাইব্রেরি ব্যবহার করে অ্যাপটিতে কতটা জায়গা আছে তা নির্ধারণ করা হয়েছে, প্রথমে currentWindowAdaptiveInfo() ফাংশনটি ব্যবহার করে, তারপর তিনটি উইন্ডো সাইজ ক্লাসের জন্য সংশ্লিষ্ট লেআউট ব্যবহার করে:
val adaptiveInfo = currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)
val windowSizeClass = adaptiveInfo.windowSizeClass
when {
windowSizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_EXPANDED_LOWER_BOUND) -> // Large
windowSizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_MEDIUM_LOWER_BOUND) -> // Medium
else -> // Compact
}
আরও তথ্যের জন্য, উইন্ডো সাইজ ক্লাস ব্যবহার করুন দেখুন।
বড় স্ক্রিনের অ্যাপের মান
বড় স্ক্রিন অ্যাপের মান নির্দেশিকাগুলির টিয়ার ২ (বড় স্ক্রিন অপ্টিমাইজড) বা টিয়ার ১ (বড় স্ক্রিন ডিফারেনটিয়েটেড) মেনে চললে আপনার অ্যাপটি ট্রাইফোল্ড ডিভাইস, ল্যান্ডস্কেপ ফোল্ডেবল এবং অন্যান্য বড় স্ক্রিন ডিভাইসে একটি আকর্ষণীয় ব্যবহারকারীর অভিজ্ঞতা প্রদান নিশ্চিত করে। নির্দেশিকাগুলিতে অভিযোজিত প্রস্তুত থেকে একটি ডিফারেনটিয়েটেড অভিজ্ঞতায় যাওয়ার জন্য একাধিক স্তরের গুরুত্বপূর্ণ পরীক্ষাগুলি অন্তর্ভুক্ত রয়েছে।
অ্যান্ড্রয়েড ১৬ এবং উচ্চতর
অ্যান্ড্রয়েড ১৬ (এপিআই লেভেল ৩৬) এবং তার উচ্চতর ভার্সনের অ্যাপগুলির জন্য, সিস্টেমটি সবচেয়ে কম প্রস্থ >= ৬০০dp সহ ডিসপ্লেগুলিতে ওরিয়েন্টেশন, রিসাইজেবিলিটি এবং অ্যাসপেক্ট রেশিও সীমাবদ্ধতা উপেক্ষা করে। অ্যাসপেক্ট রেশিও বা ব্যবহারকারীর পছন্দের ওরিয়েন্টেশন নির্বিশেষে অ্যাপগুলি পুরো ডিসপ্লে উইন্ডোটি পূরণ করে এবং লেটারবক্সিং সামঞ্জস্যতা মোড আর ব্যবহার করা হয় না।
বিশেষ বিবেচ্য বিষয়
ট্রাইফোল্ড এবং ল্যান্ডস্কেপ ফোল্ডেবলগুলি অনন্য হার্ডওয়্যার আচরণের পরিচয় দেয় যার জন্য নির্দিষ্ট হ্যান্ডলিং প্রয়োজন, বিশেষ করে সেন্সর, ক্যামেরা প্রিভিউ এবং কনফিগারেশন ধারাবাহিকতা (ভাঁজ, উন্মোচন বা আকার পরিবর্তন করার সময় অবস্থা ধরে রাখা) সম্পর্কিত।
ক্যামেরা প্রিভিউ
ল্যান্ডস্কেপ ফোল্ডেবল বা অ্যাসপেক্ট রেশিও গণনার ক্ষেত্রে (মাল্টি-উইন্ডো, ডেস্কটপ উইন্ডোিং, বা সংযুক্ত ডিসপ্লের মতো পরিস্থিতিতে) একটি সাধারণ সমস্যা হল যখন ক্যামেরা প্রিভিউ প্রসারিত, পার্শ্বাভিমুখ, ক্রপ করা বা ঘোরানো দেখায়।
অমিল অনুমান
এই সমস্যাটি প্রায়শই বড় স্ক্রিন এবং ভাঁজযোগ্য ডিভাইসগুলিতে ঘটে কারণ অ্যাপগুলি ক্যামেরা বৈশিষ্ট্যগুলির মধ্যে স্থির সম্পর্ক ধরে নিতে পারে - যেমন আকৃতির অনুপাত এবং সেন্সর ওরিয়েন্টেশন - এবং ডিভাইস বৈশিষ্ট্যগুলির মধ্যে - যেমন ডিভাইস ওরিয়েন্টেশন এবং প্রাকৃতিক ওরিয়েন্টেশন।
নতুন ফর্ম ফ্যাক্টর এই ধারণাকে চ্যালেঞ্জ করে। একটি ফোল্ডেবল ডিভাইস ডিভাইসের ঘূর্ণন পরিবর্তন না করেই তার ডিসপ্লের আকার এবং আকৃতির অনুপাত পরিবর্তন করতে পারে। উদাহরণস্বরূপ, একটি ডিভাইস খোলার ফলে আকৃতির অনুপাত পরিবর্তন হয়, কিন্তু ব্যবহারকারী যদি ডিভাইসটি ঘোরান না, তবে এর ঘূর্ণন একই থাকে। যদি কোনও অ্যাপ ধরে নেয় যে আকৃতির অনুপাত ডিভাইসের ঘূর্ণনের সাথে সম্পর্কিত, তাহলে এটি ক্যামেরার প্রিভিউ ভুলভাবে ঘোরাতে বা স্কেল করতে পারে। একই ঘটনা ঘটতে পারে যদি কোনও অ্যাপ ধরে নেয় যে ক্যামেরা সেন্সর ওরিয়েন্টেশন একটি পোর্ট্রেট ডিভাইস ওরিয়েন্টেশনের সাথে মেলে, যা ল্যান্ডস্কেপ ফোল্ডেবলের ক্ষেত্রে সর্বদা সত্য নয়।
সমাধান ১: জেটপ্যাক ক্যামেরাএক্স (সেরা)
সবচেয়ে সহজ এবং শক্তিশালী সমাধান হল Jetpack CameraX লাইব্রেরি ব্যবহার করা। এর PreviewView UI উপাদানটি সমস্ত প্রিভিউ জটিলতা স্বয়ংক্রিয়ভাবে পরিচালনা করার জন্য ডিজাইন করা হয়েছে:
-
PreviewViewসেন্সর ওরিয়েন্টেশন, ডিভাইস রোটেশন এবং স্কেলিং সঠিকভাবে সামঞ্জস্য করে। - এটি ক্যামেরার ছবির আকৃতির অনুপাত বজায় রাখে, সাধারণত কেন্দ্রীভূত করে এবং ক্রপ করে (FILL_CENTER)।
- প্রয়োজনে প্রিভিউ লেটারবক্সে পাঠানোর জন্য আপনি স্কেল টাইপ
FIT_CENTERএ সেট করতে পারেন।
আরও তথ্যের জন্য, CameraX ডকুমেন্টেশনে একটি প্রিভিউ বাস্তবায়ন দেখুন।
সমাধান ২: ক্যামেরাভিউফাইন্ডার
যদি আপনি একটি বিদ্যমান Camera2 কোডবেস ব্যবহার করেন, তাহলে CameraViewfinder লাইব্রেরি (API লেভেল 21 এর সাথে ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ) আরেকটি আধুনিক সমাধান। এটি TextureView বা SurfaceView ব্যবহার করে এবং আপনার জন্য প্রয়োজনীয় সমস্ত রূপান্তর (আসপেক্ট রেশিও, স্কেল এবং ঘূর্ণন) প্রয়োগ করে ক্যামেরা ফিড প্রদর্শনকে সহজ করে তোলে।
আরও তথ্যের জন্য, ক্যামেরা ভিউফাইন্ডারের সাথে পরিচিত ব্লগ পোস্ট এবং ক্যামেরা প্রিভিউ ডেভেলপার গাইড দেখুন।
সমাধান ৩: ম্যানুয়াল ক্যামেরা২ বাস্তবায়ন
যদি আপনি CameraX বা CameraViewfinder ব্যবহার করতে না পারেন, তাহলে আপনাকে অবশ্যই ওরিয়েন্টেশন এবং আকৃতির অনুপাত ম্যানুয়ালি গণনা করতে হবে এবং প্রতিটি কনফিগারেশন পরিবর্তনের জন্য গণনা আপডেট করা হয়েছে তা নিশ্চিত করতে হবে:
-
CameraCharacteristicsথেকে ক্যামেরা সেন্সর ওরিয়েন্টেশন (উদাহরণস্বরূপ, 0, 90, 180, 270 ডিগ্রি) পান। - ডিভাইসের বর্তমান ডিসপ্লে ঘূর্ণন (উদাহরণস্বরূপ, 0, 90, 180, 270 ডিগ্রি) পান।
- আপনার
SurfaceViewঅথবাTextureViewএর জন্য প্রয়োজনীয় রূপান্তর নির্ধারণ করতে এই দুটি মান ব্যবহার করুন। - বিকৃতি রোধ করতে নিশ্চিত করুন যে আপনার আউটপুট
Surfaceআকৃতির অনুপাত ক্যামেরা প্রিভিউয়ের আকৃতির অনুপাতের সাথে মিলে যাচ্ছে। - ক্যামেরা অ্যাপটি স্ক্রিনের কোনও অংশে চলমান থাকতে পারে, হয় মাল্টি-উইন্ডো বা ডেস্কটপ উইন্ডো মোডে অথবা সংযুক্ত ডিসপ্লেতে। এই কারণে, ক্যামেরা ভিউফাইন্ডারের মাত্রা নির্ধারণের জন্য স্ক্রিনের আকার ব্যবহার করা উচিত নয়, পরিবর্তে উইন্ডো মেট্রিক্স ব্যবহার করুন।
আরও তথ্যের জন্য, বিভিন্ন ফর্ম ফ্যাক্টর ভিডিওতে ক্যামেরা প্রিভিউ ডেভেলপার গাইড এবং আপনার ক্যামেরা অ্যাপ দেখুন।
সমাধান ৪: একটি ইনটেন্ট ব্যবহার করে ক্যামেরার মৌলিক ক্রিয়া সম্পাদন করুন
যদি আপনার অনেক ক্যামেরা বৈশিষ্ট্যের প্রয়োজন না হয়, তাহলে একটি সহজ এবং সহজ সমাধান হল ডিভাইসের ডিফল্ট ক্যামেরা অ্যাপ্লিকেশন ব্যবহার করে ছবি বা ভিডিও ক্যাপচার করার মতো মৌলিক ক্যামেরা ক্রিয়া সম্পাদন করা। আপনাকে ক্যামেরা লাইব্রেরির সাথে একীভূত করার প্রয়োজন নেই; পরিবর্তে, একটি Intent ব্যবহার করুন।
আরও তথ্যের জন্য, ক্যামেরার উদ্দেশ্য দেখুন।
কনফিগারেশন এবং ধারাবাহিকতা
ফোল্ডেবল ডিভাইসগুলি UI বহুমুখীতা বৃদ্ধি করে কিন্তু নন-ফোল্ডেবল ডিভাইসগুলির তুলনায় বেশি কনফিগারেশন পরিবর্তন শুরু করতে পারে। আপনার অ্যাপকে এই কনফিগারেশন পরিবর্তনগুলি এবং তাদের সমন্বয়গুলি পরিচালনা করতে হবে, যেমন ডিভাইস ঘূর্ণন, ভাঁজ/উন্মোচন এবং মাল্টি-উইন্ডো বা ডেস্কটপ মোডে উইন্ডো রিসাইজিং, অ্যাপের অবস্থা ধরে রাখা বা পুনরুদ্ধার করার সময়। উদাহরণস্বরূপ, অ্যাপগুলিকে নিম্নলিখিত ধারাবাহিকতা বজায় রাখতে হবে:
- ক্র্যাশ না করে বা ব্যবহারকারীদের কোনও বিঘ্নিত পরিবর্তন না করে অ্যাপের অবস্থা (উদাহরণস্বরূপ, স্ক্রিন পরিবর্তন করার সময় বা অ্যাপটিকে ব্যাকগ্রাউন্ডে পাঠানোর সময়)
- স্ক্রোলযোগ্য ক্ষেত্রগুলির স্ক্রোল অবস্থান
- টেক্সট ফিল্ডে টাইপ করা টেক্সট এবং কীবোর্ডের অবস্থা
- মিডিয়া প্লেব্যাক পজিশন যাতে কনফিগারেশন পরিবর্তন শুরু হওয়ার সময় প্লেব্যাক যেখানে ছেড়েছিল সেখানেই পুনরায় শুরু হয়
ঘন ঘন যেসব কনফিগারেশন পরিবর্তন করা হয় তার মধ্যে রয়েছে screenSize , smallestScreenSize , screenLayout , orientation , density , fontScale , touchscreen এবং keyboard ।
android:configChanges এবং Handle configuration changes দেখুন। অ্যাপের অবস্থা পরিচালনা সম্পর্কে আরও তথ্যের জন্য, Save UI অবস্থা দেখুন।
ঘনত্ব কনফিগারেশন পরিবর্তন
ট্রাইফোল্ড এবং ল্যান্ডস্কেপ ফোল্ডেবল ডিভাইসের বাইরের এবং ভিতরের স্ক্রিনগুলিতে বিভিন্ন পিক্সেল ঘনত্ব থাকতে পারে। অতএব, density জন্য কনফিগারেশন পরিবর্তন পরিচালনা করার জন্য অতিরিক্ত মনোযোগ প্রয়োজন। ডিসপ্লের ঘনত্ব পরিবর্তন হলে অ্যান্ড্রয়েড সাধারণত কার্যকলাপ পুনরায় চালু করে, যার ফলে ডেটা ক্ষতি হতে পারে। সিস্টেমকে কার্যকলাপ পুনরায় চালু করা থেকে বিরত রাখতে, আপনার ম্যানিফেস্টে ঘনত্ব পরিচালনা ঘোষণা করুন এবং আপনার অ্যাপে প্রোগ্রাম্যাটিকভাবে কনফিগারেশন পরিবর্তন পরিচালনা করুন।
AndroidManifest.xml কনফিগারেশন
-
density: ঘোষণা করে যে অ্যাপটি স্ক্রিনের ঘনত্বের পরিবর্তন পরিচালনা করবে - অন্যান্য কনফিগারেশন পরিবর্তন: অন্যান্য ঘন ঘন ঘটে যাওয়া কনফিগারেশন পরিবর্তনগুলি ঘোষণা করাও ভালো, উদাহরণস্বরূপ,
screenSize,orientation,keyboardHidden,fontScale, ইত্যাদি।
ঘনত্ব (এবং অন্যান্য কনফিগারেশন পরিবর্তন) ঘোষণা করলে সিস্টেমটি কার্যকলাপ পুনরায় চালু করতে বাধা পায় এবং পরিবর্তে onConfigurationChanged() কল করে।
onConfigurationChanged() বাস্তবায়ন
যখন ঘনত্বের পরিবর্তন ঘটে, তখন আপনাকে কলব্যাকে আপনার রিসোর্সগুলি (যেমন বিটম্যাপ পুনরায় লোড করা বা লেআউটের আকার পুনরায় গণনা করা) আপডেট করতে হবে:
- DPI
newConfig.densityDpiতে পরিবর্তিত হয়েছে কিনা তা যাচাই করুন। - কাস্টম ভিউ, কাস্টম ড্রয়েবল ইত্যাদি নতুন ঘনত্বে রিসেট করুন
প্রক্রিয়া করার জন্য রিসোর্স আইটেম
- চিত্র সংস্থান : বিটম্যাপ এবং অঙ্কনযোগ্যগুলিকে ঘনত্ব-নির্দিষ্ট সংস্থান দিয়ে প্রতিস্থাপন করুন, অথবা সরাসরি স্কেল সামঞ্জস্য করুন।
- লেআউট ইউনিট (dp থেকে px রূপান্তর) : ভিউ সাইজ, মার্জিন, প্যাডিং পুনঃগণনা করুন
- ফন্ট এবং টেক্সট সাইজ : sp ইউনিট টেক্সট সাইজ পুনরায় প্রয়োগ করুন
- কাস্টম
View/Canvasঅঙ্কন :Canvasআঁকার জন্য ব্যবহৃত পিক্সেল-ভিত্তিক মানগুলি আপডেট করুন
অ্যাপের ওরিয়েন্টেশন নির্ধারণ করা হচ্ছে
অ্যাডাপ্টিভ তৈরি করার সময় কখনই ফিজিক্যাল ডিভাইস রোটেশনের উপর নির্ভর করবেন না, কারণ বড় স্ক্রিনের ডিভাইসে এটি উপেক্ষা করা হবে এবং মাল্টি-উইন্ডো মোডে থাকা একটি অ্যাপের ওরিয়েন্টেশন ডিভাইসের চেয়ে আলাদা হতে পারে। পরিবর্তে, উইন্ডোর আকারের উপর ভিত্তি করে আপনার অ্যাপটি বর্তমানে ল্যান্ডস্কেপ নাকি পোর্ট্রেট ওরিয়েন্টেশনে আছে তা সনাক্ত করতে Configuration.orientation বা WindowMetrics ব্যবহার করুন।
সমাধান ১: Configuration.orientation ব্যবহার করুন
এই বৈশিষ্ট্যটি আপনার অ্যাপটি বর্তমানে কোন ওরিয়েন্টেশনে প্রদর্শিত হচ্ছে তা চিহ্নিত করে।
সমাধান ২: WindowMetrics#getBounds() ব্যবহার করুন
আপনি অ্যাপটির বর্তমান ডিসপ্লে সীমানা পেতে পারেন এবং ওরিয়েন্টেশন নির্ধারণের জন্য এর প্রস্থ এবং উচ্চতা পরীক্ষা করতে পারেন।
যদি আপনার ফোনে (অথবা ফোল্ডেবলের বাইরের স্ক্রিনে) অ্যাপ ওরিয়েন্টেশন সীমিত করতে হয় কিন্তু বড় স্ক্রিনের ডিভাইসে না হয়, তাহলে ফোনে অ্যাপ ওরিয়েন্টেশন সীমিত করুন দেখুন।
ভঙ্গি এবং প্রদর্শন মোড
ট্যাবলেটপ এবং HALF_OPENED এর মতো ভাঁজযোগ্য ভঙ্গি এবং অবস্থাগুলি পোর্ট্রেট ফোল্ডেবল এবং ল্যান্ডস্কেপ ফোল্ডেবল উভয় দ্বারা সমর্থিত। তবে, ট্রাইফোল্ডগুলি ট্যাবলেটপ ভঙ্গি সমর্থন করে না এবং HALF_OPENED ব্যবহার করা যাবে না। ট্রাইফোল্ডগুলি সম্পূর্ণরূপে উন্মোচিত হলে একটি অনন্য ব্যবহারকারীর অভিজ্ঞতার জন্য একটি বড় স্ক্রিন অফার করে।
HALF_OPENED সাপোর্ট করে এমন ফোল্ডেবল অ্যাপের মধ্যে আপনার অ্যাপকে আলাদা করতে, FoldingFeature এর মতো Jetpack WindowManager API ব্যবহার করুন।
ফোল্ডেবল ভঙ্গি, অবস্থা এবং ক্যামেরা প্রিভিউ সমর্থন সম্পর্কে আরও জানুন নিম্নলিখিত ডেভেলপার গাইডগুলিতে:
ফোল্ডেবল ডিভাইসগুলি অনন্য দেখার অভিজ্ঞতা প্রদান করে। রিয়ার ডিসপ্লে মোড এবং ডুয়াল স্ক্রিন মোড আপনাকে ফোল্ডেবল ডিভাইসগুলির জন্য বিশেষ ডিসপ্লে বৈশিষ্ট্য তৈরি করতে সক্ষম করে, যেমন রিয়ার ক্যামেরা সেলফি প্রিভিউ এবং অভ্যন্তরীণ এবং বাইরের স্ক্রিনে একই সাথে কিন্তু ভিন্ন ডিসপ্লে। আরও তথ্যের জন্য দেখুন:
প্রাকৃতিক সেন্সর ওরিয়েন্টেশনের দিকে লক করার ওরিয়েন্টেশন
খুব নির্দিষ্ট ব্যবহারের ক্ষেত্রে—বিশেষ করে, যেসব অ্যাপের পুরো স্ক্রিন দখল করতে হয়, ডিভাইসের ভাঁজ করা অবস্থায় না থাকায়— nosensor ফ্ল্যাগ আপনাকে ডিভাইসের স্বাভাবিক অভিযোজন অনুযায়ী অ্যাপটি লক করতে সাহায্য করে। উদাহরণস্বরূপ, পিক্সেল ফোল্ডে, ভাঁজ করা হলে ডিভাইসের স্বাভাবিক অভিযোজন হল পোর্ট্রেট, আর খোলা হলে স্বাভাবিক অভিযোজন হল ল্যান্ডস্কেপ। nosensor ফ্ল্যাগ যোগ করলে অ্যাপটি বাইরের ডিসপ্লেতে চলার সময় পোর্ট্রেটে লক থাকে এবং ভিতরের ডিসপ্লেতে চলার সময় ল্যান্ডস্কেপে লক থাকে।
<activity
android:name=".MainActivity"
android:screenOrientation="nosensor">
গেমস এবং XR সেন্সর রিম্যাপিং
গেম এবং XR অ্যাপের জন্য, ডিভাইস-নির্দিষ্ট স্থানাঙ্ক সিস্টেমে কাঁচা সেন্সর ডেটা (যেমন জাইরোস্কোপ বা অ্যাক্সিলোমিটার) সরবরাহ করা হয়। ব্যবহারকারী যদি ল্যান্ডস্কেপে গেম খেলার জন্য ডিভাইসটি ঘোরান, তাহলে সেন্সর অক্ষগুলি স্ক্রিনের সাথে ঘোরে না, যার ফলে ভুল গেম নিয়ন্ত্রণ হয়।
এই সমস্যাটি সমাধানের জন্য, বর্তমান Display.getRotation() পরীক্ষা করুন এবং সেই অনুযায়ী অক্ষগুলি পুনরায় ম্যাপ করুন:
- ঘূর্ণন 0 : x=x, y=y
- ঘূর্ণন 90 : x=-y, y=x
- ঘূর্ণন ১৮০ : x=-x, y=-y
- ঘূর্ণন 270 : x=y, y=-x
ঘূর্ণন ভেক্টরগুলির জন্য (কম্পাস বা XR অ্যাপে ব্যবহৃত), বর্তমান ঘূর্ণনের উপর ভিত্তি করে ক্যামেরার লেন্সের দিক বা স্ক্রিনের উপরের অংশকে নতুন অক্ষের সাথে ম্যাপ করতে SensorManager.remapCoordinateSystem() ব্যবহার করুন।
অ্যাপের সামঞ্জস্যতা
সমস্ত ফর্ম ফ্যাক্টর এবং সংযুক্ত ডিসপ্লেতে সামঞ্জস্যতা নিশ্চিত করার জন্য অ্যাপ্লিকেশনগুলিকে অ্যাপের মানের নির্দেশিকা অনুসরণ করতে হবে। যদি কোনও অ্যাপ্লিকেশন নির্দেশিকা মেনে চলতে না পারে, তাহলে ডিভাইস নির্মাতারা সামঞ্জস্যতা চিকিত্সা বাস্তবায়ন করতে পারে, যদিও এটি ব্যবহারকারীর অভিজ্ঞতাকে হ্রাস করতে পারে।
অতিরিক্ত তথ্যের জন্য, প্ল্যাটফর্মে প্রদত্ত সামঞ্জস্যপূর্ণ সমাধানের বিস্তৃত তালিকা পর্যালোচনা করুন, বিশেষ করে ক্যামেরা প্রিভিউ , ওভাররাইড এবং অ্যান্ড্রয়েড 16 API পরিবর্তনের সাথে সম্পর্কিত যা আপনার অ্যাপের আচরণ পরিবর্তন করতে পারে।
অভিযোজিত অ্যাপ তৈরি সম্পর্কে আরও জানতে, বড় স্ক্রিনের অ্যাপের মান দেখুন।