মাল্টি-উইন্ডো মোড সমর্থন করে

মাল্টি-উইন্ডো মোড একাধিক অ্যাপকে একই স্ক্রিন একসাথে শেয়ার করতে সক্ষম করে। অ্যাপগুলি পাশাপাশি অথবা একটির উপরে (স্প্লিট-স্ক্রিন মোড), একটি অ্যাপ একটি ছোট উইন্ডোতে অন্যান্য অ্যাপগুলিকে ওভারলে করে (ছবি-মধ্যে-ছবি মোড), অথবা পৃথক অ্যাপগুলিকে পৃথক চলমান, আকার পরিবর্তনযোগ্য উইন্ডোতে (ডেস্কটপ উইন্ডো মোড) রাখা যেতে পারে।

চিত্র ১. স্প্লিট-স্ক্রিন মোডে পাশাপাশি দুটি অ্যাপ প্রদর্শন করুন।

ফোনে স্প্লিট-স্ক্রিন মোড কীভাবে অ্যাক্সেস করবেন সে সম্পর্কে ব্যবহারকারীর নির্দেশাবলীর জন্য, Pixel ফোনে একই সময়ে দুটি অ্যাপ দেখুন -এ যান।

সংস্করণ-নির্দিষ্ট মাল্টি-উইন্ডো বৈশিষ্ট্য

মাল্টি-উইন্ডো ব্যবহারকারীর অভিজ্ঞতা অ্যান্ড্রয়েডের সংস্করণ এবং ডিভাইসের ধরণের উপর নির্ভর করে:

  • অ্যান্ড্রয়েড ৭.০ (এপিআই লেভেল ২৪) ছোট স্ক্রিনের ডিভাইসে স্প্লিট-স্ক্রিন মোড এবং নির্বাচিত ডিভাইসে পিকচার-ইন-পিকচার মোড চালু করেছে।

    • স্প্লিট-স্ক্রিন মোড দুটি অ্যাপ দিয়ে স্ক্রিন ভরে দেয়, যার মাধ্যমে দুটি অ্যাপ পাশাপাশি অথবা একটির উপরে দেখানো হয়। ব্যবহারকারীরা দুটি অ্যাপকে আলাদা করে এমন ডিভাইডার টেনে আনতে পারেন যাতে একটি অ্যাপ বড় এবং অন্যটি ছোট হয়।

    • পিকচার-ইন-পিকচার মোড ব্যবহারকারীদের অন্য অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময় ভিডিও প্লেব্যাক চালিয়ে যেতে সক্ষম করে ( পিকচার-ইন-পিকচার সাপোর্ট দেখুন)।

    • ডেস্কটপ উইন্ডো মোড , যেখানে ব্যবহারকারীরা প্রতিটি কার্যকলাপের অবাধে আকার পরিবর্তন করতে পারেন, বড় স্ক্রিন ডিভাইসের নির্মাতারা এটি সক্ষম করতে পারেন।

      আপনার অ্যাক্টিভিটির ন্যূনতম অনুমোদিত মাত্রা নির্দিষ্ট করে আপনি আপনার অ্যাপটি মাল্টি-উইন্ডো মোড কীভাবে পরিচালনা করে তা কনফিগার করতে পারেন। সিস্টেমটি সর্বদা আপনার অ্যাপটিকে পূর্ণ স্ক্রিনে দেখায় তা নিশ্চিত করার জন্য আপনি resizeableActivity="false" সেট করে আপনার অ্যাপের জন্য মাল্টি-উইন্ডো মোড অক্ষম করতে পারেন।

  • অ্যান্ড্রয়েড ৮.০ (এপিআই লেভেল ২৬) ছোট স্ক্রিনের ডিভাইসগুলিতে পিকচার-ইন-পিকচার মোড প্রসারিত করে।

  • অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) মাল্টি-উইন্ডো মোডকে স্ট্যান্ডার্ড আচরণ করে।

    • বড় স্ক্রিনে ( মাঝারি বা প্রসারিত উইন্ডো আকারের ক্লাস), প্ল্যাটফর্মটি অ্যাপ কনফিগারেশন নির্বিশেষে মাল্টি-উইন্ডো মোডে সমস্ত অ্যাপ সমর্থন করে। যদি resizeableActivity="false" , তাহলে ডিসপ্লের মাত্রা সামঞ্জস্য করার জন্য প্রয়োজনে অ্যাপটিকে সামঞ্জস্য মোডে রাখা হয়।

    • ছোট স্ক্রিনে ( কম্প্যাক্ট উইন্ডো সাইজ ক্লাস), সিস্টেমটি একটি অ্যাক্টিভিটির minWidth এবং minHeight পরীক্ষা করে নির্ধারণ করে যে অ্যাক্টিভিটিটি মাল্টি-উইন্ডো মোডে চালানো যাবে কিনা। যদি resizeableActivity="false" , তাহলে অ্যাপটি ন্যূনতম প্রস্থ এবং উচ্চতা নির্বিশেষে মাল্টি-উইন্ডো মোডে চালানো থেকে বিরত থাকে।

  • অ্যান্ড্রয়েড ১৬ (এপিআই লেভেল ৩৬) স্ক্রিন ওরিয়েন্টেশন, আকৃতির অনুপাত এবং আকার পরিবর্তনের সীমাবদ্ধতাকে ওভাররাইড করে।

    • বড় স্ক্রিনে (সবচেয়ে ছোট প্রস্থ >= 600dp) সিস্টেমটি ম্যানিফেস্ট অ্যাট্রিবিউট এবং রানটাইম API গুলিকে উপেক্ষা করে যা একটি অ্যাপের ওরিয়েন্টেশন, আকৃতির অনুপাত এবং আকার পরিবর্তনযোগ্যতা সীমাবদ্ধ করতে ব্যবহৃত হয়, সমস্ত ডিভাইস ফর্ম ফ্যাক্টরে ব্যবহারকারীর অভিজ্ঞতাকে অপ্টিমাইজ করে।

      অ্যান্ড্রয়েড ১৬ পরিবর্তনগুলি থেকে গেমগুলি কীভাবে বাদ দেবেন তা জানতে, অ্যাপ ওরিয়েন্টেশন, আকৃতির অনুপাত এবং আকার পরিবর্তনের ব্যতিক্রমগুলি দেখুন।

বাস্তবায়ন কৌশল

মাল্টি-উইন্ডো মোড একাধিক উপায়ে শুরু করা যেতে পারে।

ব্যবহারকারী-প্রবর্তিত স্প্লিট-স্ক্রিন সমর্থন করুন

  1. সাম্প্রতিক স্ক্রিনটি খুলুন
  2. একটি অ্যাপকে দৃশ্যের মধ্যে সোয়াইপ করুন
  3. অ্যাপের টাইটেল বারে অ্যাপ আইকনটি টিপুন
  4. স্প্লিট স্ক্রিন মেনু বিকল্পটি নির্বাচন করুন।
  5. সাম্প্রতিক স্ক্রিন থেকে অন্য একটি অ্যাপ নির্বাচন করুন।

ব্যবহারকারীরা উইন্ডো ডিভাইডারটিকে স্ক্রিনের প্রান্তে টেনে এনে স্প্লিট-স্ক্রিন মোড থেকে বেরিয়ে আসেন—উপরে বা নীচে, বামে বা ডানে।

প্রোগ্রাম্যাটিক স্প্লিট-স্ক্রিন (সংলগ্ন লঞ্চ)

যদি আপনার অ্যাপের পাশের উইন্ডোতে অন্য কোনও অ্যাক্টিভিটি চালু করার প্রয়োজন হয়, তাহলে FLAG_ACTIVITY_LAUNCH_ADJACENT ইন্টেন্ট ফ্ল্যাগ ব্যবহার করুন। Android 12L (API লেভেল 32) এবং তার উপরে, এই ফ্ল্যাগটি পূর্ণ স্ক্রিনে চলমান একটি অ্যাপকে স্প্লিট-স্ক্রিন মোডে প্রবেশ করতে এবং পাশের উইন্ডোতে একটি টার্গেট অ্যাক্টিভিটি চালু করতে দেয়। FLAG_ACTIVITY_LAUNCH_ADJACENT অ্যান্ড্রয়েড 7.0 (API লেভেল 24) এ চালু করা হয়েছিল।

সংলগ্ন একটি কার্যকলাপ চালু করতে, FLAG_ACTIVITY_LAUNCH_ADJACENT এর সাথে FLAG_ACTIVITY_NEW_TASK ব্যবহার করুন, উদাহরণস্বরূপ:

fun openUrlInAdjacentWindow(url: String) {
    Intent(Intent.ACTION_VIEW).apply { data = Uri.parse(url)
       addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT or Intent.FLAG_ACTIVITY_NEW_TASK)
    }.also { intent -> startActivity(intent) }
}

অ্যাক্টিভিটি এম্বেডিং (একই কাজে অ্যাক্টিভিটি বিভক্ত করা)

অ্যাক্টিভিটি এম্বেডিং একাধিক অ্যাক্টিভিটির সমন্বয়ে গঠিত অ্যাপগুলিকে একই অ্যাপ টাস্কের মধ্যে অ্যাক্টিভিটি বিভক্ত করতে সক্ষম করে, যেমন বড় স্ক্রিনে একটি তালিকা-বিস্তারিত লেআউটের জন্য। অ্যাক্টিভিটি এম্বেডিং, যা জেটপ্যাক উইন্ডো ম্যানেজারের অংশ, আপনাকে XML বা API কল ব্যবহার করে কনফিগারেশন নিয়ম (যেমন স্প্লিট-পেয়ার নিয়ম) সংজ্ঞায়িত করতে দেয় যা নির্ধারণ করে যে অ্যাক্টিভিটিগুলি পাশাপাশি প্রদর্শিত হবে নাকি স্ট্যাক করা হবে। সম্পূর্ণ বিবরণের জন্য, অ্যাক্টিভিটি এম্বেডিং দেখুন।

মাল্টি-উইন্ডো মোডে অ্যাক্টিভিটি লাইফসাইকেল

মাল্টি-উইন্ডো মোড অ্যাক্টিভিটির জীবনচক্র পরিবর্তন করে না। তবে, অ্যান্ড্রয়েডের বিভিন্ন সংস্করণে একাধিক উইন্ডোতে অ্যাপগুলির পুনঃসূচনা অবস্থা ভিন্ন হয়।

মাল্টি-রিজিউম

অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) এবং উচ্চতর ভার্সনগুলি মাল্টি-রিজিউম সমর্থন করে—যখন ডিভাইসটি মাল্টি-উইন্ডো মোডে থাকে তখন সমস্ত অ্যাক্টিভিটি RESUMED অবস্থায় থাকে। যদি কোনও স্বচ্ছ অ্যাক্টিভিটি অ্যাক্টিভিটির উপরে থাকে বা অ্যাক্টিভিটি ফোকাসযোগ্য না হয়, উদাহরণস্বরূপ, অ্যাক্টিভিটিটি পিকচার-ইন-পিকচার মোডে থাকে, তাহলে কোনও অ্যাক্টিভিটি থামানো যেতে পারে। এটিও সম্ভব যে কোনও অ্যাক্টিভিটিতে নির্দিষ্ট সময়ে ফোকাস না থাকে, উদাহরণস্বরূপ, যদি নোটিফিকেশন ড্রয়ার খোলা থাকে। onStop() পদ্ধতিটি যথারীতি কাজ করে: যেকোনো অ্যাক্টিভিটি স্ক্রিন থেকে সরিয়ে নেওয়ার সময় এই পদ্ধতিটি বলা হয়।

অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) চালিত নির্বাচিত কিছু ডিভাইসেও মাল্টি-রিজিউম পাওয়া যাবে। অ্যান্ড্রয়েড ৯ ডিভাইসে মাল্টি-রিজিউম বেছে নিতে, নিম্নলিখিত ম্যানিফেস্ট মেটাডেটা যোগ করুন:

<meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" />

কোনও প্রদত্ত ডিভাইস এই ম্যানিফেস্ট মেটাডেটা সমর্থন করে কিনা তা যাচাই করতে, ডিভাইসের স্পেসিফিকেশনগুলি দেখুন।

অ্যান্ড্রয়েড ৯

অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) এবং তার নিচের ভার্সনে মাল্টি-উইন্ডো মোডে, ব্যবহারকারী সম্প্রতি যে অ্যাক্টিভিটির সাথে ইন্টারঅ্যাক্ট করেছেন শুধুমাত্র সেই অ্যাক্টিভিটি নির্দিষ্ট সময়ে সক্রিয় থাকে। এই অ্যাক্টিভিটিকে সর্বোচ্চ বলে মনে করা হয় এবং এটিই RESUMED অবস্থায় একমাত্র অ্যাক্টিভিটি। অন্যান্য সমস্ত দৃশ্যমান অ্যাক্টিভিটি STARTED হয় কিন্তু RESUMED হয় না। তবে, সিস্টেমটি দৃশ্যমান নয় এমন অ্যাক্টিভিটিগুলির তুলনায় এই দৃশ্যমান কিন্তু পুনরায় শুরু করা হয়নি এমন অ্যাক্টিভিটিকে বেশি অগ্রাধিকার দেয়। ব্যবহারকারী যদি দৃশ্যমান অ্যাক্টিভিটিগুলির একটির সাথে ইন্টারঅ্যাক্ট করেন, তাহলে সেই অ্যাক্টিভিটি পুনরায় শুরু করা হয় এবং পূর্বে সর্বাধিক অ্যাক্টিভিটি STARTED অবস্থায় প্রবেশ করে।

যখন একটি একক সক্রিয় অ্যাপ প্রক্রিয়ার মধ্যে একাধিক কার্যকলাপ থাকে, তখন সর্বোচ্চ z-ক্রম সহ কার্যকলাপটি পুনরায় শুরু করা হয় এবং অন্যান্যগুলি বিরতি দেওয়া হয়।

কনফিগারেশন পরিবর্তন

যখন ব্যবহারকারী একটি অ্যাপকে মাল্টি-উইন্ডো মোডে রাখেন, তখন সিস্টেমটি হ্যান্ডেল কনফিগারেশন পরিবর্তনগুলিতে উল্লেখিত কনফিগারেশন পরিবর্তনের কার্যকলাপ সম্পর্কে অবহিত করে। এটি তখনও ঘটে যখন ব্যবহারকারী অ্যাপটির আকার পরিবর্তন করে বা অ্যাপটিকে আবার পূর্ণ স্ক্রিন মোডে রাখে।

মূলত, এই পরিবর্তনের কার্যকলাপ জীবনচক্রের প্রভাব একই রকম, যখন সিস্টেম অ্যাপটিকে জানায় যে ডিভাইসটি পোর্ট্রেট থেকে ল্যান্ডস্কেপ ওরিয়েন্টেশনে স্যুইচ করা হয়েছে, তবে অ্যাপের মাত্রাগুলি কেবল অদলবদল করার পরিবর্তে পরিবর্তিত হয়। আপনার কার্যকলাপ নিজেই কনফিগারেশন পরিবর্তন পরিচালনা করতে পারে, অথবা আপনার অ্যাপ্লিকেশন সিস্টেমকে কার্যকলাপটি ধ্বংস করতে এবং নতুন মাত্রা দিয়ে এটি পুনরায় তৈরি করতে অনুমতি দিতে পারে।

যদি ব্যবহারকারী একটি উইন্ডোর আকার পরিবর্তন করে এবং উভয় মাত্রায় এটিকে বড় করে, তাহলে সিস্টেমটি ব্যবহারকারীর ক্রিয়াকলাপের সাথে মেলে কার্যকলাপের আকার পরিবর্তন করে এবং প্রয়োজন অনুসারে কনফিগারেশন পরিবর্তন করে। যদি অ্যাপটি নতুন উন্মুক্ত এলাকায় অঙ্কন করতে পিছিয়ে থাকে, তাহলে সিস্টেমটি অস্থায়ীভাবে windowBackground অ্যাট্রিবিউট বা ডিফল্ট windowBackgroundFallback স্টাইল অ্যাট্রিবিউট দ্বারা নির্দিষ্ট রঙ দিয়ে সেই অঞ্চলগুলি পূরণ করে।

এক্সক্লুসিভ রিসোর্স অ্যাক্সেস

মাল্টি-রিজিউম বৈশিষ্ট্যটি সমর্থন করতে, onTopResumedActivityChanged() লাইফসাইকেল কলব্যাক ব্যবহার করুন।

যখন কোনও অ্যাক্টিভিটি উপরের পুনঃসূচনাকৃত অ্যাক্টিভিটি পজিশনটি অর্জন করে বা হারায় তখন কলব্যাকটি আহ্বান করা হয়, যা গুরুত্বপূর্ণ যখন কোনও অ্যাক্টিভিটি একটি শেয়ার্ড সিঙ্গেলটন রিসোর্স ব্যবহার করে, যেমন মাইক্রোফোন বা ক্যামেরা:

override fun onTopResumedActivityChanged(topResumed: Boolean) {
    if (topResumed) {
        // Top resumed activity.
        // Can be a signal to re-acquire exclusive resources.
    } else {
        // No longer the top resumed activity.
    }
}

মনে রাখবেন যে একটি অ্যাপ অন্যান্য কারণেও রিসোর্স হারাতে পারে, যেমন শেয়ার করা হার্ডওয়্যার অপসারণ করা।

যাই হোক না কেন, একটি অ্যাপের উচিত সুন্দরভাবে ইভেন্টগুলি পরিচালনা করা এবং উপলব্ধ সংস্থানগুলিকে প্রভাবিত করে এমন পরিবর্তনগুলি বর্ণনা করা।

ক্যামেরা ব্যবহারকারী অ্যাপগুলির জন্য, CameraManager.AvailabilityCallback#onCameraAccessPrioritiesChanged() একটি ইঙ্গিত দেয় যে ক্যামেরা অ্যাক্সেস করার চেষ্টা করার জন্য এটি একটি ভাল সময় হতে পারে। এই পদ্ধতিটি Android 10 (API স্তর 29) থেকে উপলব্ধ।

মনে রাখবেন যে resizeableActivity=false এক্সক্লুসিভ ক্যামেরা অ্যাক্সেসের গ্যারান্টি দেয় না, কারণ ক্যামেরা ব্যবহার করে এমন অন্যান্য অ্যাপগুলি অন্যান্য ডিসপ্লেতে খোলা যেতে পারে।

চিত্র ২। মাল্টি-উইন্ডো মোডে ক্যামেরা।

অ্যাপটি ফোকাস হারিয়ে ফেললে আপনার অ্যাপটিকে ক্যামেরাটি রিলিজ করার প্রয়োজন নেই। উদাহরণস্বরূপ, ব্যবহারকারী যখন নতুন ফোকাস করা টপমোস্ট রিজিউম করা অ্যাপের সাথে ইন্টারঅ্যাক্ট করে তখন আপনি ক্যামেরা প্রিভিউ চালিয়ে যেতে চাইতে পারেন। যখন আপনার অ্যাপটি টপমোস্ট রিজিউম করা অ্যাপ না থাকে তখন ক্যামেরাটি চালু রাখা ঠিক আছে, তবে ডিসকানেক্ট কেসটি সঠিকভাবে পরিচালনা করতে হবে। যখন টপমোস্ট রিজিউম করা অ্যাপটি ক্যামেরা ব্যবহার করতে চায়, তখন এটি এটি খুলতে পারে এবং আপনার অ্যাপটি অ্যাক্সেস হারাবে। অ্যাপটি ফোকাস ফিরে পেলে আপনার অ্যাপ ক্যামেরাটি আবার খুলতে পারে।

একটি অ্যাপ যখন CameraDevice.StateCallback#onDisconnected() কলব্যাক পাবে, তখন ক্যামেরা ডিভাইসে পরবর্তী কলগুলি একটি CameraAccessException দেবে।

উইন্ডো মেট্রিক্স

অ্যান্ড্রয়েড ১১ (এপিআই লেভেল ৩০) মাল্টি-উইন্ডো মোডে চলমান অ্যাপগুলির সীমা প্রদানের জন্য নিম্নলিখিত WindowManager পদ্ধতিগুলি চালু করেছে:

  • getCurrentWindowMetrics() : সিস্টেমের বর্তমান উইন্ডোিং অবস্থার জন্য একটি WindowMetrics অবজেক্ট ফেরত পাঠায়।
  • getMaximumWindowMetrics() : সিস্টেমের বৃহত্তম সম্ভাব্য উইন্ডোিং অবস্থার জন্য WindowMetrics প্রদান করে।

Jetpack WindowManager লাইব্রেরি পদ্ধতিগুলি computeCurrentWindowMetrics() এবং computeMaximumWindowMetrics() যথাক্রমে একই রকম কার্যকারিতা প্রদান করে, তবে API স্তর 14 এর সাথে পশ্চাদগামী সামঞ্জস্যের সাথে।

বর্তমান ডিসপ্লে ব্যতীত অন্যান্য ডিসপ্লের মেট্রিক্স পেতে, নিম্নলিখিতগুলি করুন (কোড স্নিপেটে দেখানো হয়েছে):

  • একটি প্রদর্শন প্রসঙ্গ তৈরি করুন
  • প্রদর্শনের জন্য একটি উইন্ডো প্রসঙ্গ তৈরি করুন
  • উইন্ডো প্রসঙ্গের WindowManager পান
  • অ্যাপটিতে উপলব্ধ সর্বাধিক প্রদর্শন এলাকার WindowMetrics পান

val windowMetrics = context.createDisplayContext(display)
                           .createWindowContext(WindowManager.LayoutParams.TYPE_APPLICATION, null)
                           .getSystemService(WindowManager::class.java)
                           .maximumWindowMetrics

অবচিত পদ্ধতি

নতুন WindowManager পদ্ধতির অনুকূলে API লেভেল 30-এ getSize() এবং getMetrics() Display পদ্ধতিগুলি অবচিত করা হয়েছিল।

অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) Display মেথডগুলিকে getRealSize() এবং getRealMetrics() থেকে বঞ্চিত করে এবং getMaximumWindowMetrics() এর আচরণের সাথে আরও ঘনিষ্ঠভাবে মেলে এমনভাবে তাদের আচরণ আপডেট করে।

মাল্টি-উইন্ডো মোড কনফিগারেশন

যদি আপনার অ্যাপটি Android 7.0 (API লেভেল 24) বা তার উচ্চতর ভার্সনের জন্য উপযুক্ত হয়, তাহলে আপনি আপনার অ্যাপের অ্যাক্টিভিটিগুলি মাল্টি-উইন্ডো মোড কীভাবে এবং কীভাবে সমর্থন করে তা কনফিগার করতে পারেন। আপনি আপনার ম্যানিফেস্টে অ্যাট্রিবিউট সেট করতে পারেন যাতে আকার এবং লেআউট উভয়ই নিয়ন্ত্রণ করা যায়। একটি রুট অ্যাক্টিভিটির অ্যাট্রিবিউট সেটিংস তার টাস্ক স্ট্যাকের মধ্যে সমস্ত অ্যাক্টিভিটির জন্য প্রযোজ্য। উদাহরণস্বরূপ, যদি রুট অ্যাক্টিভিটিতে android:resizeableActivity="true" থাকে, তাহলে টাস্ক স্ট্যাকের সমস্ত অ্যাক্টিভিটি রিসাইজেবল। কিছু বৃহত্তর ডিভাইসে, যেমন Chromebooks, আপনার অ্যাপটি রিসাইজেবল উইন্ডোতে চলতে পারে, এমনকি যদি আপনি android:resizeableActivity="false" নির্দিষ্ট করেন। যদি এটি আপনার অ্যাপটি ভেঙে দেয়, তাহলে আপনি এই ধরনের ডিভাইসগুলিতে আপনার অ্যাপের উপলব্ধতা সীমাবদ্ধ করতে Google Play-তে ফিল্টার ব্যবহার করতে পারেন।

অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) ডিফল্টভাবে মাল্টি-উইন্ডো মোডে চলে। বড় স্ক্রিনে ( মাঝারি বা প্রসারিত উইন্ডো আকারের ক্লাস), অ্যাপ কনফিগারেশন নির্বিশেষে সমস্ত অ্যাপ মাল্টি-উইন্ডো মোডে চলে। ছোট স্ক্রিনে, সিস্টেমটি একটি অ্যাক্টিভিটির minWidth , minHeight এবং resizeableActivity সেটিংস পরীক্ষা করে নির্ধারণ করে যে অ্যাক্টিভিটি মাল্টি-উইন্ডো মোডে চালানো যাবে কিনা।

resizeableActivity

আপনার ম্যানিফেস্টের <activity> অথবা <application> এলিমেন্টে এই অ্যাট্রিবিউটটি সেট করুন যাতে API লেভেল 30 এবং তার নিচের জন্য মাল্টি-উইন্ডো মোড সক্ষম বা অক্ষম করা যায়:

<application
  android:name=".MyActivity"
  android:resizeableActivity=["true" | "false"] />;

যদি এই বৈশিষ্ট্যটি true সেট করা থাকে, তাহলে কার্যকলাপটি স্প্লিট-স্ক্রিন এবং ডেস্কটপ উইন্ডো মোডে চালু করা যেতে পারে। যদি বৈশিষ্ট্যটি false সেট করা থাকে, তাহলে কার্যকলাপটি মাল্টি-উইন্ডো মোড সমর্থন করে না। যদি মানটি মিথ্যা হয়, এবং ব্যবহারকারী মাল্টি-উইন্ডো মোডে কার্যকলাপটি চালু করার চেষ্টা করে, তাহলে কার্যকলাপটি পূর্ণ স্ক্রিন দখল করে।

যদি আপনার অ্যাপটি API লেভেল 24 বা তার বেশি টার্গেট করে, কিন্তু আপনি এই অ্যাট্রিবিউটের জন্য কোনও মান নির্দিষ্ট না করেন, তাহলে অ্যাট্রিবিউটের মান ডিফল্টভাবে true হিসেবে সেট করা হবে।

যদি আপনার অ্যাপটি API লেভেল 31 বা তার বেশি হয়, তাহলে এই বৈশিষ্ট্যটি ছোট এবং বড় স্ক্রিনে ভিন্নভাবে কাজ করে:

  • বড় স্ক্রিন ( মাঝারি বা প্রসারিত উইন্ডো আকারের ক্লাস): সমস্ত অ্যাপ মাল্টি-উইন্ডো মোড সমর্থন করে। অ্যাট্রিবিউটটি নির্দেশ করে যে কোনও কার্যকলাপের আকার পরিবর্তন করা যেতে পারে কিনা। যদি resizeableActivity="false" , তাহলে প্রদর্শনের মাত্রার সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য প্রয়োজনে অ্যাপটিকে সামঞ্জস্য মোডে রাখা হয়।
  • ছোট পর্দা ( কম্প্যাক্ট উইন্ডো আকারের শ্রেণী): যদি resizeableActivity="true" এবং activity ন্যূনতম প্রস্থ এবং ন্যূনতম উচ্চতা মাল্টি-উইন্ডো প্রয়োজনীয়তার মধ্যে থাকে, তাহলে কার্যকলাপটি মাল্টি-উইন্ডো মোড সমর্থন করে। যদি resizeableActivity="false" , তাহলে কার্যকলাপটি ন্যূনতম প্রস্থ এবং উচ্চতা নির্বিশেষে মাল্টি-উইন্ডো মোড সমর্থন করে না।

যদি আপনার অ্যাপটি API লেভেল 36 বা তার বেশি হয়, তাহলে সবচেয়ে কম প্রস্থ >= 600dp সহ ডিসপ্লেগুলিতে এই বৈশিষ্ট্যটি উপেক্ষা করা হয়। তবে, অ্যাপটি ব্যবহারকারীর পছন্দের অনুপাতকে সম্পূর্ণরূপে সম্মান করে ( ব্যবহারকারী প্রতি-অ্যাপ ওভাররাইড দেখুন)।

যদি আপনি একটি গেম তৈরি করেন, তাহলে Android 16 (API লেভেল 36) পরিবর্তনগুলি থেকে আপনার গেমটি কীভাবে বাদ দিতে পারেন তা জানতে অ্যাপ ওরিয়েন্টেশন, আকৃতির অনুপাত এবং আকার পরিবর্তনযোগ্যতা দেখুন।

supportsPictureInPicture

আপনার ম্যানিফেস্টের <activity> নোডে এই অ্যাট্রিবিউটটি সেট করুন যাতে অ্যাক্টিভিটি পিকচার-ইন-পিকচার মোড সমর্থন করে কিনা তা নির্দেশ করা যায়।

<activity
  android:name=".MyActivity"
  android:supportsPictureInPicture=["true" | "false"] />

configChanges

মাল্টি-উইন্ডো কনফিগারেশন পরিবর্তনগুলি নিজে পরিচালনা করতে, যেমন যখন কোনও ব্যবহারকারী একটি উইন্ডোর আকার পরিবর্তন করে, আপনার অ্যাপ ম্যানিফেস্টে <activity> নোডে কমপক্ষে নিম্নলিখিত মানগুলি সহ android:configChanges অ্যাট্রিবিউট যোগ করুন:

<activity
  android:name=".MyActivity"
  android:configChanges="screenSize | smallestScreenSize
      | screenLayout | orientation" />

android:configChanges যোগ করার পর, আপনার কার্যকলাপ এবং টুকরোগুলি ধ্বংস এবং পুনঃনির্মিত করার পরিবর্তে onConfigurationChanged() এ একটি কলব্যাক পাবে। এরপর আপনি ম্যানুয়ালি আপনার ভিউ আপডেট করতে, রিসোর্স পুনরায় লোড করতে এবং প্রয়োজন অনুসারে অন্যান্য ক্রিয়াকলাপ সম্পাদন করতে পারবেন।

<layout>

অ্যান্ড্রয়েড ৭.০ (এপিআই লেভেল ২৪) এবং তার উচ্চতর সংস্করণে, <layout> ম্যানিফেস্ট এলিমেন্টটি বেশ কয়েকটি অ্যাট্রিবিউট সমর্থন করে যা মাল্টি-উইন্ডো মোডে কোনও অ্যাক্টিভিটি কীভাবে আচরণ করে তা প্রভাবিত করে:

  • android:defaultHeight , android:defaultWidth : ডেস্কটপ উইন্ডো মোডে চালু হলে কার্যকলাপের ডিফল্ট উচ্চতা এবং প্রস্থ।

  • android:gravity : ডেস্কটপ উইন্ডো মোডে চালু হলে অ্যাক্টিভিটির প্রাথমিক স্থান নির্ধারণ। উপযুক্ত মানের জন্য Gravity ক্লাসটি দেখুন।

  • android:minHeight , android:minWidth : স্প্লিট-স্ক্রিন এবং ডেস্কটপ উইন্ডোিং মোড উভয়ের ক্ষেত্রেই অ্যাক্টিভিটির জন্য সর্বনিম্ন উচ্চতা এবং সর্বনিম্ন প্রস্থ। ব্যবহারকারী যদি স্প্লিট-স্ক্রিন মোডে ডিভাইডারটি সরিয়ে নির্দিষ্ট ন্যূনতমের চেয়ে ছোট অ্যাক্টিভিটি তৈরি করে, তাহলে সিস্টেমটি ব্যবহারকারীর অনুরোধকৃত আকারে অ্যাক্টিভিটি ক্রপ করে।

ডেস্কটপ উইন্ডো মোডে অ্যাক্টিভিটি প্রদর্শিত হলে কীভাবে কোনও অ্যাক্টিভিটির ডিফল্ট আকার এবং অবস্থান এবং তার সর্বনিম্ন আকার নির্দিষ্ট করতে হয় তা নিম্নলিখিত কোডটি দেখায়:

<activity android:name=".MyActivity">
    <layout android:defaultHeight="500dp"
          android:defaultWidth="600dp"
          android:gravity="top|end|..."
          android:minHeight="450dp"
          android:minWidth="300dp" />
</activity>

রানটাইমে মাল্টি-উইন্ডো মোড

অ্যান্ড্রয়েড ৭.০ থেকে শুরু করে, সিস্টেমটি মাল্টি-উইন্ডো মোডে চলতে পারে এমন অ্যাপগুলিকে সমর্থন করার জন্য কার্যকারিতা প্রদান করে।

মাল্টি-উইন্ডো মোডে অক্ষম বৈশিষ্ট্যগুলি

মাল্টি-উইন্ডো মোডে, অ্যান্ড্রয়েড এমন বৈশিষ্ট্যগুলি অক্ষম বা উপেক্ষা করতে পারে যা অন্যান্য কার্যকলাপ বা অ্যাপের সাথে ডিভাইসের স্ক্রিন ভাগ করে নেওয়ার ক্ষেত্রে প্রযোজ্য নয়।

অতিরিক্তভাবে, কিছু সিস্টেম UI কাস্টমাইজেশন বিকল্প অক্ষম করা আছে। উদাহরণস্বরূপ, মাল্টি-উইন্ডো মোডে চলমান অ্যাপগুলি স্ট্যাটাস বার লুকাতে পারে না ( সিস্টেম UI দৃশ্যমানতা নিয়ন্ত্রণ করুন দেখুন)।

সিস্টেমটি android:screenOrientation অ্যাট্রিবিউটের পরিবর্তনগুলি উপেক্ষা করে।

মাল্টি-উইন্ডো মোড কোয়েরি এবং কলব্যাক

মাল্টি-উইন্ডো মোড সমর্থন করার জন্য Activity ক্লাস নিম্নলিখিত পদ্ধতিগুলি অফার করে:

  • isInMultiWindowMode() : কার্যকলাপটি মাল্টি-উইন্ডো মোডে আছে কিনা তা নির্দেশ করে।

  • isInPictureInPictureMode() : কার্যকলাপটি ছবিতে ছবিতে আছে কিনা তা নির্দেশ করে।

  • onMultiWindowModeChanged() : যখনই কোনও অ্যাক্টিভিটি মাল্টি-উইন্ডো মোডে যায় বা বেরিয়ে যায় তখন সিস্টেম এই মেথডটিকে কল করে। যদি অ্যাক্টিভিটি মাল্টি-উইন্ডো মোডে প্রবেশ করে তবে সিস্টেম মেথডটিকে true মান দেয় অথবা যদি অ্যাক্টিভিটি মাল্টি-উইন্ডো মোড থেকে বেরিয়ে আসে তবে false মান দেয়।

  • onPictureInPictureModeChanged() : যখনই কোনও অ্যাক্টিভিটি পিকচার-ইন-পিকচার মোডে যায় বা বেরিয়ে যায় তখন সিস্টেম এই পদ্ধতিটিকে কল করে। যদি অ্যাক্টিভিটি পিকচার-ইন-পিকচার মোডে প্রবেশ করে তবে সিস্টেমটি পদ্ধতিটিকে true এর মান দেয় অথবা যদি অ্যাক্টিভিটি পিকচার-ইন-পিকচার মোড থেকে বেরিয়ে আসে তবে false এর মান দেয়।

Fragment ক্লাস এই পদ্ধতিগুলির অনেকের সংস্করণ প্রকাশ করে; উদাহরণস্বরূপ, Fragment.onMultiWindowModeChanged()

ছবিতে-ছবিতে মোড

কোনও কার্যকলাপকে পিকচার-ইন-পিকচার মোডে রাখতে, enterPictureInPictureMode() কল করুন যদি ডিভাইসটি পিকচার-ইন-পিকচার মোড সমর্থন না করে তবে এই পদ্ধতির কোনও প্রভাব নেই। আরও তথ্যের জন্য, পিকচার-ইন-পিকচার (PiP) ব্যবহার করে ভিডিও যোগ করুন দেখুন।

মাল্টি-উইন্ডো মোডে নতুন কার্যকলাপ

যখন আপনি একটি নতুন কার্যকলাপ শুরু করেন, তখন আপনি নির্দেশ করতে পারেন যে সম্ভব হলে নতুন কার্যকলাপটি বর্তমানের পাশে প্রদর্শিত হবে। FLAG_ACTIVITY_LAUNCH_ADJACENT ফ্ল্যাগটি ব্যবহার করুন, যা সিস্টেমকে একটি সংলগ্ন উইন্ডোতে নতুন কার্যকলাপ তৈরি করার চেষ্টা করতে বলে, যাতে দুটি কার্যকলাপ স্ক্রিন ভাগ করে নেয়। সিস্টেম এটি করার জন্য সর্বোত্তম প্রচেষ্টা করে, তবে এটি ঘটবে কিনা তা নিশ্চিত নয়।

যদি কোনও ডিভাইস ডেস্কটপ উইন্ডো মোডে থাকে এবং আপনি একটি নতুন অ্যাক্টিভিটি চালু করেন, তাহলে আপনি ActivityOptions.setLaunchBounds() কল করে নতুন অ্যাক্টিভিটির মাত্রা এবং স্ক্রিনের অবস্থান নির্দিষ্ট করতে পারেন। ডিভাইসটি মাল্টি-উইন্ডো মোডে না থাকলে পদ্ধতিটির কোনও প্রভাব নেই।

API লেভেল 30 এবং তার নিচের দিকে, যদি আপনি একটি টাস্ক স্ট্যাকের মধ্যে একটি অ্যাক্টিভিটি চালু করেন, তাহলে অ্যাক্টিভিটিটি স্ক্রিনের অ্যাক্টিভিটিকে প্রতিস্থাপন করবে, এর সমস্ত মাল্টি-উইন্ডো বৈশিষ্ট্য উত্তরাধিকারসূত্রে পাবে। আপনি যদি মাল্টি-উইন্ডো মোডে একটি পৃথক উইন্ডো হিসাবে নতুন অ্যাক্টিভিটি চালু করতে চান, তাহলে আপনাকে এটি একটি নতুন টাস্ক স্ট্যাকে চালু করতে হবে।

অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) অ্যাপগুলিকে একটি অ্যাপ্লিকেশনের টাস্ক উইন্ডোকে একাধিক কার্যকলাপের মধ্যে বিভক্ত করতে সক্ষম করে। আপনি একটি XML কনফিগারেশন ফাইল তৈরি করে বা Jetpack WindowManager API কল করে আপনার অ্যাপের কার্যকলাপগুলি - পূর্ণ স্ক্রিন, পাশাপাশি, অথবা স্ট্যাকড - কীভাবে প্রদর্শন করে তা নির্ধারণ করতে পারেন।

টেনে আনুন এবং ফেলে দিন

ব্যবহারকারীরা যখন দুটি কার্যকলাপ স্ক্রিন শেয়ার করছে তখন এক কার্যকলাপ থেকে অন্য কার্যকলাপে ডেটা টেনে আনতে এবং ছেড়ে দিতে পারে। (Android 7.0 এর আগে, ব্যবহারকারীরা কেবল একটি একক কার্যকলাপের মধ্যে ডেটা টেনে আনতে এবং ছেড়ে দিতে পারতেন।) বাদ দেওয়া সামগ্রী গ্রহণের জন্য দ্রুত সহায়তা যোগ করতে DropHelper API দেখুন। বিস্তৃত ড্র্যাগ-এন্ড-ড্রপ নির্দেশিকা জন্য, Enable drag and drop দেখুন।

মাল্টি-ইনস্ট্যান্স

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

অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) এবং উচ্চতর সংস্করণগুলি আপনাকে অ্যাক্টিভিটি এম্বেডিং -এ একই টাস্ক উইন্ডোতে পাশাপাশি দুটি অ্যাক্টিভিটি ইন্সট্যান্স চালু করতে সক্ষম করে।

যদি আপনি ব্যবহারকারীদের অ্যাপ্লিকেশন লঞ্চার বা টাস্কবার থেকে আপনার অ্যাপ্লিকেশনের আরেকটি ইনস্ট্যান্স শুরু করার অনুমতি দিতে চান, তাহলে আপনার লঞ্চার অ্যাক্টিভিটির ম্যানিফেস্টে android:resizeableActivity="true" সেট করুন এবং এমন কোনও লঞ্চ মোড ব্যবহার করবেন না যা একাধিক ইনস্ট্যান্স প্রতিরোধ করে। উদাহরণস্বরূপ, FLAG_ACTIVITY_MULTIPLE_TASK বা FLAG_ACTIVITY_NEW_DOCUMENT সেট করা থাকলে বিভিন্ন কাজে একটি singleInstancePerTask অ্যাক্টিভিটি একাধিকবার ইনস্ট্যান্টিয়েট করা যেতে পারে।

Android 15 (API লেভেল 35) এবং উচ্চতর সংস্করণে, PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI আপনাকে মাল্টি-ইন্সট্যান্সের জন্য সমর্থন ঘোষণা করতে সক্ষম করে। এই বৈশিষ্ট্যটি সিস্টেম UI-এর জন্য একটি স্পষ্ট সংকেত যা ব্যবহারকারীকে অ্যাপের একাধিক উদাহরণ তৈরি করার জন্য নিয়ন্ত্রণগুলি প্রকাশ করে। বৈশিষ্ট্যটি লঞ্চ মোড থেকে স্বাধীন কিন্তু শুধুমাত্র তখনই ব্যবহার করা উচিত যখন কোনও কার্যকলাপ বা অ্যাপ্লিকেশনের লঞ্চ মোড প্রপার্টির সাথে সামঞ্জস্যপূর্ণ হয়, উদাহরণস্বরূপ, যখন লঞ্চ মোড singleInstance না হয়।

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

মাল্টি-উইন্ডো মোড যাচাইকরণ

আপনার অ্যাপটি API লেভেল ২৪ বা তার বেশি হোক বা না হোক, যদি কোনও ব্যবহারকারী Android 7.0 বা তার বেশি ভার্সন চালিত ডিভাইসে মাল্টি-উইন্ডো মোডে এটি চালু করার চেষ্টা করে, তাহলে মাল্টি-উইন্ডো মোডে এটি কীভাবে আচরণ করে তা যাচাই করা উচিত।

পরীক্ষামূলক ডিভাইস

অ্যান্ড্রয়েড ৭.০ (এপিআই লেভেল ২৪) বা তার উচ্চতর ভার্সন চালিত ডিভাইসগুলি মাল্টি-উইন্ডো মোড সমর্থন করে।

API লেভেল ২৩ বা তার কম

যখন ব্যবহারকারীরা মাল্টি-উইন্ডো মোডে অ্যাপটি ব্যবহার করার চেষ্টা করেন, তখন সিস্টেম জোর করে অ্যাপটির আকার পরিবর্তন করে, যদি না অ্যাপটি একটি নির্দিষ্ট ওরিয়েন্টেশন ঘোষণা করে।

যদি আপনার অ্যাপটি একটি নির্দিষ্ট ওরিয়েন্টেশন ঘোষণা না করে, তাহলে আপনার অ্যাপটি অ্যান্ড্রয়েড ৭.০ বা তার উচ্চতর সংস্করণে চলমান একটি ডিভাইসে চালু করা উচিত এবং অ্যাপটিকে স্প্লিট-স্ক্রিন মোডে রাখার চেষ্টা করা উচিত। অ্যাপটির জোরপূর্বক আকার পরিবর্তন করার সময় ব্যবহারকারীর অভিজ্ঞতা গ্রহণযোগ্য কিনা তা যাচাই করুন।

যদি অ্যাপটি একটি নির্দিষ্ট ওরিয়েন্টেশন ঘোষণা করে, তাহলে আপনার অ্যাপটিকে মাল্টি-উইন্ডো মোডে রাখার চেষ্টা করা উচিত। যাচাই করুন যে যখন আপনি এটি করবেন, তখন অ্যাপটি পূর্ণ স্ক্রিন মোডে থাকবে।

API লেভেল ২৪ থেকে ৩০

যদি আপনার অ্যাপটি API লেভেল 24 থেকে 30 পর্যন্ত লক্ষ্য করে এবং মাল্টি-উইন্ডো সাপোর্ট অক্ষম না করে, তাহলে স্প্লিট-স্ক্রিন এবং ডেস্কটপ উইন্ডোিং মোড উভয়ের অধীনে নিম্নলিখিত আচরণটি যাচাই করুন:

  • অ্যাপটি ফুল স্ক্রিনে চালু করুন, তারপর রিসেন্টস বোতামটি দীর্ঘক্ষণ চেপে মাল্টি-উইন্ডো মোডে স্যুইচ করুন। অ্যাপটি সঠিকভাবে স্যুইচ করছে কিনা তা যাচাই করুন।

  • অ্যাপটি সরাসরি মাল্টি-উইন্ডো মোডে চালু করুন এবং অ্যাপটি সঠিকভাবে চালু হচ্ছে কিনা তা যাচাই করুন। আপনি "রিসেন্টস" বোতাম টিপে, তারপর আপনার অ্যাপের টাইটেল বারটি দীর্ঘক্ষণ টিপে এবং স্ক্রিনের হাইলাইট করা যেকোনো একটি জায়গায় টেনে এনে মাল্টি-উইন্ডো মোডে একটি অ্যাপ চালু করতে পারেন।

  • স্ক্রিন ডিভাইডার টেনে স্প্লিট-স্ক্রিন মোডে আপনার অ্যাপের আকার পরিবর্তন করুন। যাচাই করুন যে অ্যাপটি ক্র্যাশ না করেই আকার পরিবর্তন করছে এবং প্রয়োজনীয় UI উপাদানগুলি দৃশ্যমান।

  • যদি আপনি আপনার অ্যাপের জন্য ন্যূনতম মাত্রা নির্দিষ্ট করে থাকেন, তাহলে অ্যাপটির আকার পরিবর্তন করার চেষ্টা করুন যাতে এর উইন্ডোর আকার ঐ মাত্রার চেয়ে ছোট হয়। যাচাই করুন যে আপনি অ্যাপটির আকার নির্দিষ্ট ন্যূনতম মাত্রার চেয়ে ছোট করতে পারবেন না।

  • সকল পরীক্ষার মাধ্যমে, আপনার অ্যাপের কর্মক্ষমতা গ্রহণযোগ্য কিনা তা যাচাই করুন। উদাহরণস্বরূপ, অ্যাপটির আকার পরিবর্তন করার পরে UI আপডেট করার জন্য খুব বেশি সময় নেই তা যাচাই করুন।

API লেভেল ৩১ বা তার বেশি

যদি আপনার অ্যাপটি API লেভেল 31 বা তার বেশি টার্গেট করে এবং প্রধান অ্যাক্টিভিটির ন্যূনতম প্রস্থ এবং ন্যূনতম উচ্চতা উপলব্ধ ডিসপ্লে এরিয়ার সংশ্লিষ্ট মাত্রার চেয়ে কম বা সমান হয়, তাহলে API লেভেল 24 থেকে 30 এর জন্য তালিকাভুক্ত সমস্ত আচরণ যাচাই করুন।

পরীক্ষার চেকলিস্ট

মাল্টি-উইন্ডো মোডে আপনার অ্যাপের কর্মক্ষমতা যাচাই করতে, নিম্নলিখিত ক্রিয়াকলাপগুলি চেষ্টা করুন। আপনার এই ক্রিয়াকলাপগুলি স্প্লিট-স্ক্রিন এবং ডেস্কটপ উইন্ডো মোডে উভয় ক্ষেত্রেই চেষ্টা করা উচিত, অন্যথায় উল্লেখিত ক্ষেত্রে ছাড়া।

  • মাল্টি-উইন্ডো মোডে প্রবেশ করুন এবং ছেড়ে যান।

  • আপনার অ্যাপ থেকে অন্য অ্যাপে স্যুইচ করুন এবং অ্যাপটি দৃশ্যমান কিন্তু সক্রিয় না থাকাকালীন সঠিকভাবে আচরণ করছে কিনা তা যাচাই করুন। উদাহরণস্বরূপ, যদি আপনার অ্যাপটি ভিডিও চালাচ্ছে, তাহলে যাচাই করুন যে ব্যবহারকারী অন্য অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময় ভিডিওটি চলতে থাকে।

  • স্প্লিট-স্ক্রিন মোডে, আপনার অ্যাপটিকে আরও বড় এবং ছোট করার জন্য স্ক্রিন ডিভাইডারটি সরানোর চেষ্টা করুন। এই অপারেশনগুলি পাশাপাশি এবং অন্য কনফিগারেশনের উপরে উভয় ক্ষেত্রেই চেষ্টা করুন। অ্যাপটি ক্র্যাশ না হয়, প্রয়োজনীয় কার্যকারিতা দৃশ্যমান হয় এবং আকার পরিবর্তনের অপারেশনটি খুব বেশি সময় নেয় না তা যাচাই করুন।

  • দ্রুত ধারাবাহিকভাবে বেশ কয়েকটি রিসাইজ অপারেশন করুন। আপনার অ্যাপটি ক্র্যাশ বা মেমোরি লিক করছে কিনা তা যাচাই করুন। অ্যান্ড্রয়েড স্টুডিওর মেমোরি প্রোফাইলার আপনার অ্যাপের মেমোরি ব্যবহার সম্পর্কে তথ্য সরবরাহ করে ( মেমোরি প্রোফাইলার দিয়ে আপনার অ্যাপের মেমোরি ব্যবহার পরীক্ষা করুন দেখুন)।

  • আপনার অ্যাপটি সাধারণত বিভিন্ন উইন্ডো কনফিগারেশনে ব্যবহার করুন এবং অ্যাপটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করুন। যাচাই করুন যে টেক্সটটি পঠনযোগ্য এবং UI উপাদানগুলি ইন্টারঅ্যাক্ট করার জন্য খুব ছোট নয়।

মাল্টি-উইন্ডো সাপোর্ট বন্ধ করা হয়েছে

API লেভেল 24 থেকে 30 এ, যদি আপনি android:resizeableActivity="false" সেট করে মাল্টি-উইন্ডো সাপোর্ট বন্ধ করে থাকেন, তাহলে আপনার অ্যাপটি Android 7.0 থেকে 11 পর্যন্ত চলমান ডিভাইসে চালু করা উচিত এবং অ্যাপটিকে স্প্লিট-স্ক্রিন এবং ডেস্কটপ উইন্ডো মোডে রাখার চেষ্টা করা উচিত। যাচাই করুন যে এটি করার সময়, অ্যাপটি পূর্ণ-স্ক্রিন মোডে থাকে।

অতিরিক্ত সম্পদ

অ্যান্ড্রয়েডে মাল্টি-উইন্ডো সাপোর্ট সম্পর্কে আরও তথ্যের জন্য, দেখুন: