একটি ইভেন্ট অবস্থার পরিবর্তন ঘটায় এবং ক্রিয়া শুরু করে। ইভেন্টগুলি সিস্টেম UI থেকে অথবা প্রক্রিয়ার বাইরে থেকে একটি অভিপ্রায় ব্যবহার করে প্রেরণ করা সংকেত হিসেবে কাজ করে। ইভেন্টগুলি স্কেলেবল UI-কে এমন ঘটনা সম্পর্কে অবহিত করে যার জন্য প্রতিক্রিয়া প্রয়োজন।
একটি স্কেলেবল UI ইভেন্ট হল একটি সিস্টেম সিগন্যাল, যা হার্ডওয়্যার বা সফ্টওয়্যার পরিবর্তনের ফলে ট্রিগার হয়, যা একটি প্যানেলের অবস্থা পরিবর্তন করতে পারে। এই ইভেন্টগুলি ফ্রেমওয়ার্ককে এমন ঘটনা সম্পর্কে অবহিত করে যার জন্য একটি UI প্রতিক্রিয়া প্রয়োজন। প্যানেলের অবস্থার উপর আরও সুনির্দিষ্ট নিয়ন্ত্রণের জন্য, আপনি বিল্ট-ইন সিস্টেম ইভেন্টগুলি ছাড়াও কাস্টম ইভেন্টগুলিও সংজ্ঞায়িত করতে পারেন।
একটি ইভেন্টের গঠন
একটি বাধ্যতামূলক অনন্য শনাক্তকারী (আইডি) একটি ইভেন্ট সনাক্ত করে। এই আইডি ঘটনার ধরণকে শ্রেণীবদ্ধ করে, যেমন _System_AppOpenEvent
অথবা _System_PanelEmptyEvent
।
এই আইডি ছাড়াও, একটি ইভেন্ট ঐচ্ছিকভাবে টোকেন, কী-মান জোড়া বহন করতে পারে যা ইভেন্ট সম্পর্কে প্রসঙ্গ এবং বিশদ প্রদান করে। এই টোকেনগুলি ইভেন্টগুলির আরও সূক্ষ্ম ফিল্টারিংয়ের অনুমতি দেয়, যা শুধুমাত্র নির্দিষ্ট অবস্থার অধীনে ট্রানজিশন বা ক্রিয়াগুলিকে ট্রিগার করতে সক্ষম করে।
টোকেনগুলি ইভেন্টে একটি সেমি-কোলন ( ;
) দ্বারা পৃথক করা কী-মান জোড়ার তালিকা হিসাবে প্রেরণ করা হয়। সিস্টেম সমর্থিত কীগুলির তালিকা এখানে দেওয়া হল:
চাবি | বিবরণ |
---|---|
panelId | ইভেন্টের সাথে সম্পর্কিত একটি নির্দিষ্ট UI প্যানেল সনাক্ত করে। |
component | কম্পোনেন্টের নাম উল্লেখ করে, যেমন ইভেন্টের সাথে লিঙ্ক করা একটি কার্যকলাপ। |
package | ইভেন্টের সাথে সম্পর্কিত প্যাকেজের নাম নির্দেশ করে। |
panelToVariantId | নির্দিষ্ট প্রসঙ্গে একটি প্যানেলের টার্গেট ভেরিয়েন্ট নির্দিষ্ট করে। প্যানেল ট্রানজিশন শুনে অ্যানিমেশন ক্যাসকেড করতে এই বৈশিষ্ট্যটি ব্যবহার করুন। উদাহরণস্বরূপ, প্যানেল A একটি খোলা অবস্থায় রূপান্তরিত হলে প্যানেল B কে বন্ধ অবস্থায় রূপান্তরিত করা। |
উদাহরণস্বরূপ:
"component=com.android.app;panelId=panel1"
ইভেন্ট ম্যাচিং লজিক
যখন কোনও ইভেন্ট প্রেরণ করা হয়, তখন কোনও রূপান্তর বা ক্রিয়া শুরু করার জন্য এটি অবশ্যই নির্ধারিত মানদণ্ডের সাথে মিলিত হতে হবে। মিল প্রক্রিয়াটি দুটি পর্যায়ে ঘটে:
কঠোর ইভেন্ট
id
ম্যাচিং: প্রেরিত ইভেন্টেরid
অবশ্যই ট্রানজিশন বা অ্যাকশন ইভেন্ট ফিল্টারে নির্দিষ্টid
সাথে হুবহু মিলতে হবে। যদি আইডিগুলি মেলে না, তাহলে ইভেন্টটি মিল নয় বলে বিবেচিত হবে।আংশিক ইভেন্ট টোকেন ম্যাচিং: যখন ইভেন্ট আইডি মিলে যায়, তখন সিস্টেম ফিল্টারে সংজ্ঞায়িত টোকেনের সাথে ইভেন্টের টোকেনগুলি মূল্যায়ন করতে আংশিক ম্যাচিং ব্যবহার করে।
একটি মিল ঘটতে হলে, ট্রানজিশনের ইভেন্ট সংজ্ঞায় উল্লেখিত সমস্ত ইভেন্ট বৈশিষ্ট্য (টোকেন) অবশ্যই প্রেরণকৃত ইভেন্টের সংশ্লিষ্ট বৈশিষ্ট্যের সাথে কঠোরভাবে মিলতে হবে।
তবে, ডিসপেন্ডেড ইভেন্টে অতিরিক্ত টোকেন থাকতে পারে যা ফিল্টারে স্পষ্টভাবে সংজ্ঞায়িত করা হয়নি। অতিরিক্ত টোকেন কোনও মিলকে আটকায় না। পরিবর্তে, ম্যাচিং মূল্যায়নে সেগুলি উপেক্ষা করা হয়।
বিপরীতভাবে, যদি ফিল্টারটি এমন একটি টোকেন নির্দিষ্ট করে যা প্রেরণকৃত ইভেন্টে উপস্থিত নেই অথবা, যদি একটি মিলিত টোকেনের মান সারিবদ্ধ না হয়, তাহলে এটি একটি মিল হিসাবে বিবেচিত হবে না।
উদাহরণস্বরূপ, panelId="panel1"
এ component="com.android.myapp.Activity"
দিয়ে id="app_open"
সংঘটিত হলে ট্রিগার করার জন্য সংজ্ঞায়িত একটি রূপান্তর বিবেচনা করুন।
যদি একটি প্রেরিত ইভেন্টে id="app_open"
, panelId="panel1"
, এবং component="com.android.myapp.Activity"
থাকে, তাহলে একটি মিল তৈরি করা হয়। সমস্ত ফিল্টার মানদণ্ড পূরণ করা হয় এবং Activity value in the dispatched event is considered a match for
।
তবে, id="app_open"
, panelId="panel1"
, এবং component="com.android.yourapp.Activity"
হলে ডিসপেচড ইভেন্টটি মিলবে না। যদিও id
এবং panelId
মিলে যায়, ট্রানজিশনে component
সমান নয় এমন component
— com.android.myapp
— ডিসপেচড ইভেন্টে com.android.yourapp
সাথে মেলে না।
ট্রানজিশন ট্রিগার
যদিও একটি ট্রানজিশন একটি মিল হতে পারে, এর অর্থ এই নয় যে এটি ট্রিগার করা হয়েছে। প্রতিটি ইভেন্টের জন্য শুধুমাত্র একটি ট্রানজিশন ট্রিগার করা যেতে পারে। স্কেলেবল UI শুধুমাত্র নিকটতম মিলটিকে ট্রিগার করার লক্ষ্য রাখে।
উদাহরণস্বরূপ, যখন দুটি ট্রানজিশন - একটি কম্পোনেন্টের নাম সহ এবং একটি কম্পোনেন্টের নাম -m
ছাড়াই - একটি মিল হয়, তখন শুধুমাত্র কম্পোনেন্টের নাম সহ ট্রানজিশনটি ট্রিগার হয়।
ইভেন্ট প্রেরণ এবং পরিচালনা
স্কেলেবল UI এর গতিশীল আচরণের কেন্দ্রবিন্দু হল ইভেন্ট। সিস্টেম UI থেকে অথবা বহিরাগত প্রক্রিয়া থেকে কোনও উদ্দেশ্য নিয়ে ইভেন্টগুলি প্রেরণ করা যেতে পারে।
সিস্টেম ইভেন্ট
এই কাঠামোটি বেশ কয়েকটি সিস্টেম ইভেন্ট সংজ্ঞায়িত করে যা এই ক্রিয়াগুলিকে সহজতর করে:
বৈশিষ্ট্য | বিবরণ |
---|---|
_System_OnHomeEvent ( SYSTEM_HOME_EVENT_ID ) | এর অর্থ হল সিস্টেমটি হোম স্ক্রিন প্রদর্শনের জন্য একটি অনুরোধ পেয়েছে। AAOS-এ, হোম হল উইন্ডোজের একটি নমনীয় কনফিগারেশন, যেমন উইজেটের সংমিশ্রণ, এমনকি একটি মানচিত্র। এই ইভেন্টটি ট্রানজিশন বা অ্যাকশনের জন্য অত্যন্ত গুরুত্বপূর্ণ যা ব্যবহারকারীর প্রাথমিক হোম ইন্টারফেস দেখার উপর নির্ভর করে। |
_System_TaskOpenEvent ( SYSTEM_TASK_OPEN_EVENT_ID ) | কোনও টাস্ক বা অ্যাপ খোলার সময় এটি পাঠানো হয়। এই সাধারণ ইভেন্টটি কোনও অ্যাপ চালু হওয়ার উপর ভিত্তি করে ক্রিয়া বা রূপান্তরকে ট্রিগার করতে পারে। এই ইভেন্টে |
_System_TaskCloseEvent ( SYSTEM_TASK_CLOSE_EVENT_ID ) | কোনও টাস্ক বা অ্যাপ বন্ধ হয়ে গেছে বলে সংকেত দেয় এবং _System_TaskOpenEvent এর প্রতিরূপ হিসেবে কাজ করে। এটি সিস্টেমকে অ্যাপগুলি খারিজ করার সময় প্রতিক্রিয়া জানাতে দেয়। এটি একটি প্যানেলকে ডিফল্ট অবস্থায় ফিরিয়ে আনতে বা অন্যান্য পরিষ্কারের পদক্ষেপ শুরু করতে ট্রানজিশন ট্রিগার করতে পারে। |
_System_TaskPanelEmptyEvent ( SYSTEM_TASK_PANEL_EMPTY_EVENT_ID ) | যখন একটি নির্দিষ্ট প্যানেল খালি হয়ে যায় এবং এই ইভেন্টটি শক্তিশালী ত্রুটি পুনরুদ্ধারের জন্য এবং সংশ্লিষ্ট সামগ্রী ক্র্যাশ হয়ে গেলে বা অপ্রত্যাশিতভাবে বন্ধ হয়ে গেলে অ্যাপগুলি পুনরায় চালু করার জন্য গুরুত্বপূর্ণ, যাতে খালি UI প্যানেল প্রদর্শিত না হয়। উদাহরণস্বরূপ, যদি কোনও |
_System_EnterSuwEvent ( SYSTEM_ENTER_SUW_EVENT_ID ) | সেটআপ উইজার্ড (SUW) তে প্রবেশকারী সিস্টেমকে নির্দেশ করে। এই ইভেন্টটি সিস্টেমের প্রস্তুতির ইঙ্গিত দেয় এবং সিস্টেমটি শুরু হওয়ার পরে অ্যাপ চালু করার জন্য বা মনোনীত প্যানেলগুলিকে দৃশ্যমান করার জন্য কনফিগার করা যেতে পারে। এই ধরনের গুরুত্বপূর্ণ সিস্টেম অবস্থায় প্রবেশ করার জন্য উপযুক্ত UI সমন্বয় বা ক্রিয়াগুলি ট্রিগার করার জন্য একটি নিবেদিত ইভেন্টের প্রয়োজন। |
_System_ExitSuwEvent ( SYSTEM_EXIT_SUW_EVENT_ID ইভেন্ট_আইডি ) | সেটআপ উইজার্ড (SUW) থেকে বেরিয়ে আসা সিস্টেমটিকে নির্দেশ করে। _System_EnterSuwEvent এর মতো, এই ইভেন্টটি সিস্টেমকে ডিফল্ট অ্যাপ চালু করে বা একটি স্ট্যান্ডার্ড UI-তে রূপান্তর করে সেটআপ প্রক্রিয়া সম্পন্ন হওয়ার প্রতিক্রিয়া জানাতে দেয়। |
_System_OnAnimationEndEvent ( SYSTEM_ON_ANIMATION_END_EVENT_ID ইভেন্ট_আইডি ) | UI তে একটি অ্যানিমেশন সম্পূর্ণ হলে ট্রিগার হয়। আপনি এই ইভেন্টটি ব্যবহার করে পরবর্তী ক্রিয়াগুলি ট্রিগার করতে পারেন অথবা ভিজ্যুয়াল ট্রানজিশনের সমাপ্তির উপর নির্ভরশীল পরিবর্তনের অবস্থা নির্ধারণ করতে পারেন। এই ইভেন্টে |