বিকাশকারীদের জন্য অ্যান্ড্রয়েড অঙ্গভঙ্গি টিউটোরিয়াল (অ্যান্ড্রয়েড 10)

লেখক: John Stephens
সৃষ্টির তারিখ: 1 জানুয়ারি 2021
আপডেটের তারিখ: 19 মে 2024
Anonim
ট্রপিকো মোবাইল গেম পর্যালোচনা [জার্মান; অনেক সাবটাইটেল] আইওএস অ্যান্ড্রয়েড অ্যাপ টেস্ট
ভিডিও: ট্রপিকো মোবাইল গেম পর্যালোচনা [জার্মান; অনেক সাবটাইটেল] আইওএস অ্যান্ড্রয়েড অ্যাপ টেস্ট

কন্টেন্ট


বাক্সের বাইরে, অ্যান্ড্রয়েডের স্ট্যান্ডার্ড ইউআই উপাদানগুলি অনেকগুলি অ্যান্ড্রয়েড অঙ্গভঙ্গি সমর্থন করে তবে মাঝে মাঝে আপনার অ্যাপটিকে কেবল অনক্লিকের চেয়ে বেশি সমর্থন করার প্রয়োজন হতে পারে!

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

কখনও কখনও আপনার অ্যাপ্লিকেশনটিকে কেবল অনক্লিকের চেয়ে বেশি সমর্থন করার প্রয়োজন হতে পারে।

এই তথ্যটি বাস্তব-বিশ্বের প্রকল্পগুলিতে কীভাবে অনুবাদ হতে পারে তা প্রদর্শনের জন্য, আমরা এমন একটি অ্যাপ্লিকেশন তৈরি করব যা ব্যবহারকারীকে চিমটি অঙ্গভঙ্গিটি ব্যবহার করে কোনও চিত্রকে জুম বা আউট করতে ও মঞ্জুরি দেয়। অবশেষে, যেহেতু অ্যান্ড্রয়েড 10 অ্যান্ড্রয়েডের অঙ্গভঙ্গি সমর্থনটি সম্পূর্ণরূপে পরীক্ষা করার জন্য প্রস্তুত, তাই আপনার অ্যাপের নিজস্ব অঙ্গভঙ্গিগুলি কীভাবে অ্যান্ড্রয়েড 10 এর সাথে সাংঘর্ষিক না হয় তা নিশ্চিত করার জন্য অ্যান্ড্রয়েডের নতুন অঙ্গভঙ্গি-ভিত্তিক নেভিগেশনকে সমর্থন করার জন্য আপনি কীভাবে আপনার অ্যাপ্লিকেশনগুলি আপডেট করতে পারবেন তা আমরা খুঁজছি'll সিস্টেম-ব্যাপী অঙ্গভঙ্গি।


আরও পড়ুন:আপনার অ্যান্ড্রয়েড ইউআই তৈরি করা হচ্ছে: ভিউ সম্পর্কে আপনার যা কিছু জানা দরকার

স্পর্শ অঙ্গভঙ্গি কি?

টাচ অঙ্গভঙ্গি ব্যবহারকারীদের স্পর্শ ব্যবহার করে আপনার অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করতে দেয়।

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

অঙ্গভঙ্গি নেভিগেশন অ্যান্ড্রয়েড 10 এ একটি বড় বিষয়, তাই আমাদের নিজের যুক্ত করার সময় দ্বন্দ্ব সৃষ্টি না করার বিষয়ে আমাদের সতর্ক থাকতে হবে!

অ্যান্ড্রয়েড অঙ্গভঙ্গিগুলি নিম্নলিখিত বিভাগগুলিতে বিভক্ত করা যেতে পারে:

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

অ্যান্ড্রয়েডে, স্বতন্ত্র আঙ্গুলগুলি বা স্পর্শ অঙ্গভঙ্গি সম্পাদনকারী অন্যান্য বস্তুগুলি হিসাবে উল্লেখ করা হয় পয়েন্টার.


মোশনইভেণ্টস: অঙ্গভঙ্গির জীবনচক্র বোঝা

ব্যবহারকারী যখন ডিভাইসের টাচস্ক্রিনে এক বা একাধিক পয়েন্টার রাখে এবং যখন তারা পর্দা থেকে এই পয়েন্টার (গুলি) সরিয়ে দেয় তখন একটি স্পর্শ ইভেন্ট শুরু হয়। এটি অ্যান্ড্রয়েড অঙ্গভঙ্গি শুরু করে।

এক বা একাধিক পয়েন্টার স্ক্রিনের সাথে যোগাযোগ করার সময়, MotionEvent বস্তুগুলি স্পর্শ ইভেন্ট সম্পর্কে তথ্য সংগ্রহ করে। এক্স এবং ওয়াই স্থানাঙ্কের ক্ষেত্রে, এবং যোগাযোগের ক্ষেত্রের চাপ এবং আকারের ক্ষেত্রে এই তথ্যটিতে টাচ ইভেন্টের চলন অন্তর্ভুক্ত।

একটি মোশনইভেন্ট একটি অ্যাকশন কোডের মাধ্যমেও স্পর্শ ইভেন্টের রাজ্যের বর্ণনা দেয়। অ্যান্ড্রয়েড অ্যাকশন কোডগুলির একটি দীর্ঘ তালিকা সমর্থন করে, তবে মূল ক্রিয়াকলাপগুলির মধ্যে কয়েকটি রয়েছে:

  • ACTION_DOWN। একটি স্পর্শ ইভেন্ট শুরু হয়েছে। এটি সেই অবস্থান যেখানে পয়েন্টারটি প্রথমে স্ক্রিনের সাথে যোগাযোগ করে।
  • ACTION_MOVE। টাচ ইভেন্টের সময় একটি পরিবর্তন ঘটেছিল (ACTION_DOWN এবং ACTION_UP এর মধ্যে)। একটি অ্যাকশন_মোভিতে পয়েন্টারের সর্বশেষতম এক্স এবং ওয়াই স্থানাংকগুলি অন্তর্ভুক্ত থাকে, শেষ ডাউন বা সরানো ইভেন্টের পরে কোনও মধ্যবর্তী পয়েন্টগুলির সাথে।
  • ACTION_UP। স্পর্শ ইভেন্ট শেষ হয়েছে। এটিতে চূড়ান্ত প্রকাশের অবস্থান রয়েছে। অনুমান করা ইঙ্গিতটি বাতিল করা হয়নি, সব স্পর্শ ইভেন্টগুলি ACTION_UP এর সাথে শেষ হয়।
  • ACTION_CANCEL। অঙ্গভঙ্গিটি বাতিল হয়ে গেছে, এবং অ্যান্ড্রয়েড এই ইভেন্ট সম্পর্কে আরও কোনও তথ্য গ্রহণ করবে না। আপনারা যেমন কোনও ACTION_UP ইভেন্ট হ্যান্ডেল করেন ঠিক তেমনই আপনার ACTION_CANCEL পরিচালনা করা উচিত।

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

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

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

নিম্নলিখিত কোডে, আমরা অন টাচ ইভেন্ট () পদ্ধতিটি ওভাররাইড করে প্রতিটি স্পর্শ ইভেন্টকে বাধা দিচ্ছি এবং তারপরে নিম্নলিখিত মানগুলি পরীক্ষা করে দেখছি:

  • সত্য। আমাদের অ্যাপ্লিকেশনটি এই স্পর্শ ইভেন্টটি পরিচালনা করেছে এবং আমাদের লোগকটের সাথে সম্পর্কিত প্রিন্ট করা উচিত।
  • মিথ্যা। আমাদের অ্যাপ্লিকেশনটি এই স্পর্শ ইভেন্টটি পরিচালনা করে নি। টাচএভেন্ট সত্য না হওয়া পর্যন্ত ইভেন্টটি স্ট্যাকের মধ্য দিয়ে যেতে থাকবে।

অন ​​টিচইভেন্ট () পদ্ধতিটি প্রতিবার পয়েন্টারের অবস্থান, চাপ বা যোগাযোগের ক্ষেত্র পরিবর্তনের সাথে সাথে ট্রিগার করা হবে।

নিম্নলিখিত কোডটিতে, আমি ক্রিয়াকলাপটি সম্পাদনের জন্য getActionMasked () ব্যবহার করছি:

আমদানি androidx.appcompat.app.appCompatActivity; আমদানি androidx.core.view. মোশনইভেন্টকম্প্যাট; আমদানি android.os.Bundle; আমদানি android.util.Log; আমদানি অ্যান্ড্রয়েড.ভিউ.মোশনএভেন্ট; পাবলিক ক্লাস মেইনএকটিভিটি অ্যাপকম্প্যাটএটিভিটি প্রসারিত করে {বেসরকারী স্ট্যাটিক ফাইনাল স্ট্রিং TAG = "MyActivity"; @ ওভাররাইড সুরক্ষিত অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); setContentView (R.layout.activity_main); Ou @ ওভাররাইড পাবলিক বুলিয়ান অন টাচএভেন্ট (মোশনইভেন্ট ইভেন্ট) my ইন মাইএকশন = মোশনইভেন্টকম্প্যাট.জেট অ্যাকশনমাস্কড (ইভেন্ট); স্যুইচ (আমারএকশন) {কেস (মোশনইভেন্ট। অ্যাকশন_আপ): লগ.আই (TAG, "আপ এক্সন"); সত্য প্রত্যাবর্তন; কেস (মোশনএভেন্ট। অ্যাকশন_ডাউন): লগ.ড (TAG, "ডাউন অ্যাকশন"); সত্য প্রত্যাবর্তন; কেস (মোশনএভেন্ট। অ্যাকশন_মোভ): লগ.ড (TAG, "পদক্ষেপ সরান"); সত্য প্রত্যাবর্তন; কেস (মোশনএভেন্ট। অ্যাকশন_সিএনএসএল): লগ.ড (TAG, "ক্রিয়া বাতিল করুন"); সত্য প্রত্যাবর্তন; ডিফল্ট: রিটার্ন সুপার.অনু টাচ ইভেন্ট (ইভেন্ট); }}}

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

অন ​​টাচলিস্টনার: নির্দিষ্ট দর্শনগুলির জন্য ক্যাপচার টাচ ইভেন্টগুলি

আপনি নিজের ভিউ অবজেক্টে একটি ভিউ সংযুক্ত করার জন্য setOnTouchListener () পদ্ধতিটি ব্যবহার করে স্পর্শ ইভেন্টগুলি শুনতে পারেন। সেটঅনটচলিস্টনার () পদ্ধতিটি এমন কলব্যাক নিবন্ধন করে যা প্রতিবারই কোনও সংযুক্ত ইভেন্টের সাথে তার সংযুক্ত দৃশ্যে প্রেরণ করা হবে, উদাহরণস্বরূপ আমরা যখনই প্রতিচ্ছবি প্রতিচ্ছবি ব্যবহার করি তখনই আমরা কলব্যাক করছি:

চিত্র দেখুন দেখুন = সন্ধান ভিউবিআইআইডি (R.id.my_imageView); myView.setOnTouchListener (new OnTouchListener () {পাবলিক বুলিয়ান অন টাচ (দেখুন ভি, মোশনইভেন্ট ইভেন্ট) do // করণীয়: ইভেন্টের স্পর্শে প্রতিক্রিয়া জানান // সত্য প্রত্যাবর্তন;}});

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

টাচ opাল: রেকর্ডিং চলন-ভিত্তিক অঙ্গভঙ্গি

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

দুর্ঘটনাজনিত স্ক্রোলিং রোধে সহায়তা করতে, অ্যান্ড্রয়েড অঙ্গভঙ্গিগুলি "স্পর্শ opালু" ধারণাটি ব্যবহার করে যা দূরত্বটি, পিক্সেলগুলিতে, যে কোনও পয়েন্টার নন-মুভমেন্ট ভিত্তিক অঙ্গভঙ্গি যেমন একটি ট্যাপের আগে ভ্রমণ করতে পারে, যেমন একটি আন্দোলন-ভিত্তিক অঙ্গভঙ্গি হয়ে যায়, যেমন একটি টানা হিসাবে।

স্পর্শ opালু হ'ল দূরত্ব, পিক্সেলগুলিতে, যে কোনও পয়েন্টার নন-মুভমেন্ট ভিত্তিক অঙ্গভঙ্গির আগে ভ্রমণ করতে পারে

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

আপনি অ্যান্ড্রয়েডের ভেলোসিটি ট্র্যাকার ক্লাস ব্যবহার করে একটি আন্দোলন-ভিত্তিক অঙ্গভঙ্গির বেগ পরিমাপ করতে পারেন। নিম্নলিখিত ক্রিয়াকলাপে, আমি একটি অঙ্গভঙ্গির গতি পুনরুদ্ধার করতে VelocityTracker ব্যবহার করছি এবং তারপরে অ্যান্ড্রয়েড স্টুডিওর লগক্যাটটিতে বেগটি মুদ্রণ করছি:

আমদানি android.app.Activity; আমদানি android.util.Log; আমদানি অ্যান্ড্রয়েড.ভিউ.মোশনএভেন্ট; আমদানি android.view.VelocityTracker; সার্বজনীন বর্গ মাইনএটিভিটি ক্রিয়াকলাপ বাড়ায় {পাবলিক স্ট্যাটিক ফাইনাল স্ট্রিং TAG = "বেগ"; বেসরকারী গতিবেগ ট্র্যাকার @ ওভাররাইড পাবলিক বুলিয়ান অন টাচইভেন্ট (মোশনইভেন্ট ইভেন্ট) {অভিভেলোকিটি ট্র্যাকার (ইভেন্ট); স্যুইচ (ইভেন্ট.জেটএকশন ()) {কেস মোশনএভেন্ট.এ্যাকশন_আপ: চূড়ান্ত ভেলোসিটিট্র্যাকার বেগ ট্র্যাকার = মাইভেলোসিটি ট্র্যাকার; // পয়েন্টারের গতিবেগ নির্ধারণ করুন // বেগ ট্র্যাকার ডটকমপিটক্রেনারভেলোসিটি (1000); // প্রতিটি পয়েন্টারের জন্য বেগটি পুনরুদ্ধার করুন // ফ্লোট এক্সভেলোসিটি = মাইভেলোসিটিট্রেকার.গেট এক্সভেলোসিটি (); ভাসা yVelocity = myVelocityTracker.getYVelocity (); // প্রতি সেকেন্ডে গতিবেগ পিক্সেলগুলিতে লগ করুন // লগ.আই (TAG, "xVelocity:" + xVelocity + ", yVelocity:" + yVelocity); // বেগ ট্র্যাকারটিকে তার প্রাথমিক অবস্থায় পুনরায় সেট করুন, পরবর্তী অঙ্গভঙ্গিটি রেকর্ড করার জন্য প্রস্তুত // myVelocityTracker.clear (); বিরতি; ডিফল্ট: বিরতি; সত্য প্রত্যাবর্তন; } বেসরকারী শূন্য রেকর্ডভেলোসিটি ট্র্যাকার (মোশনইভেন্ট ইভেন্ট) {যদি (মাইভেলোসিটিট্র্যাকার == নাল) {// নতুন ভেলোসিটি ট্র্যাকার অবজেক্টটি পুনরুদ্ধার করুন // myVelocityTracker = VelocityTracker.obtain (); V myVelocityTracker.addMovement (ইভেন্ট); }}

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

অঙ্গভঙ্গি নির্দেশক: অ্যান্ড্রয়েড অঙ্গভঙ্গি দিয়ে একটি চিমটি থেকে জুম অ্যাপ তৈরি করা

ধরে নেওয়া যে আপনি সাধারণ অ্যান্ড্রয়েড অঙ্গভঙ্গি যেমন ট্যাপ এবং লম্বা প্রেস ব্যবহার করছেন, স্বতন্ত্র স্পর্শ ইভেন্টগুলি প্রক্রিয়া না করে অঙ্গভঙ্গিগুলি সনাক্ত করতে আপনি Android এর অঙ্গভঙ্গি ডিটেক্টর শ্রেণি ব্যবহার করতে পারেন।

কোনও অঙ্গভঙ্গিটি সনাক্ত করতে, আপনাকে গেসচারডেক্টরটির একটি উদাহরণ তৈরি করতে হবে এবং তারপরে ভিউ # অন টাচইভেন্ট (মোশনইভেন্ট) পদ্ধতিতে টুচেন্ট (অ্যান্ড্রয়েড.ভিউ.মোশনইভেন্ট) কল করতে হবে। তারপরে আপনি কলব্যাকে কীভাবে এই স্পর্শ ইভেন্টটি পরিচালনা করা উচিত তা নির্ধারণ করতে পারেন।

আরও পড়ুন: অ্যান্ড্রয়েড কিউ এক্সপ্লোর করে: আপনার অ্যাপ্লিকেশনটিতে বুদ্বুদ বিজ্ঞপ্তি যুক্ত করা হচ্ছে

আসুন এমন একটি অ্যাপ্লিকেশন তৈরি করি যেখানে ব্যবহারকারী অঙ্গভঙ্গিগুলি ব্যবহার করে কোনও চিত্র ভিউ জুম বা আউট করতে পারে। শুরু করতে, একটি সাধারণ লেআউট তৈরি করুন যাতে একটি চিত্র থাকে:

জুম ইন / জুম আউট এফেক্ট তৈরি করতে, আমি স্কেলজেস্টার ডিটেক্টর ব্যবহার করছি, এটি একটি সুবিধাযুক্ত ক্লাস যা স্কেলিং ইভেন্টগুলির উপসেটটি শুনতে পাবে, পাশাপাশি সরলঅনস্কেলজেক্টারলিস্টনার সহায়ক ক্লাস।

নিম্নলিখিত ক্রিয়াকলাপে, আমি আমার ইমেজভিউয়ের জন্য স্কেলজেষ্টার ডিটেক্টরটির একটি উদাহরণ তৈরি করছি এবং তারপরে ভিউ # অন টাচএভেন্ট (মোশনভেন্ট) পদ্ধতিতে টুচেন্ট (অ্যান্ড্রয়েড.ভিউ.মোশনএভেন্ট) কল করছি। পরিশেষে, আমি সংজ্ঞায়িত করছি যে অ্যাপ্লিকেশনটি কীভাবে এই অঙ্গভঙ্গিটি পরিচালনা করবে।

আমদানি android.os.Bundle; আমদানি অ্যান্ড্রয়েড.ভিউ.মোশনএভেন্ট; আমদানি android.widget.I छवि ভিউ; আমদানি android.view.ScaleGestureDetector; আমদানি অ্যান্ড্রয়েড.গ্রাফিক্স.ম্যাট্রিক্স; আমদানি androidx.appcompat.app.appCompatActivity; পাবলিক ক্লাস মাইনএটিভিটি অ্যাপকম্প্যাটএটিভিটি প্রসারিত করে {ব্যক্তিগত ম্যাট্রিক্স চিত্রম্যাট্রিক্স = নতুন ম্যাট্রিক্স (); প্রাইভেট ইমেজভিউ ইমেজভিউ; প্রাইভেট ফ্লোট স্কেল = 2 এফ; বেসরকারী স্কেলজেকচারডেক্টর অঙ্গভঙ্গি ডিটেক্টর; @ ওভাররাইড সুরক্ষিত অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); setContentView (R.layout.activity_main); ইমেজভিউ = (ইমেজভিউ) সন্ধান ভিউবিআইআইডি (আর.আইডি.আইমেজভিউ); // অঙ্গভঙ্গি সনাক্তকারী ইনস্ট্যান্ট করুন // অঙ্গভঙ্গি ডিটেক্টর = নতুন স্কেলজেষ্টার ডিটেক্টর (মেইনএকটিভিটি.এটি, নতুন ইমেজলিস্টার ()); Ou @ ওভাররাইড পাবলিক বুলিয়ান অন টাচএভেন্ট (মোশনইভেন্ট ইভেন্ট) {// অঙ্গভঙ্গি ডিটেক্টর সমস্ত ইভেন্ট // ইঙ্গিতডেটিেক্টর.অন টাচইভেন্ট (ইভেন্ট) পরিদর্শন করতে দিন; সত্য প্রত্যাবর্তন; } // স্কেল শ্রোতার প্রয়োগ করুন // ব্যক্তিগত শ্রেণীর চিত্রলিস্টার স্কেলজেস্টার ডিজিটার প্রসারিত করে imp = ডিটেক্টর.জেটস্কেলফ্যাক্টর (); // আমাদের চিত্রের জন্য সর্বাধিক এবং সর্বনিম্ন আকার নির্ধারণ করুন // স্কেল = ম্যাথ.ম্যাক্স (0.2f, ম্যাথ.মিন (স্কেল, 6.0f)); চিত্রম্যাট্রিক্স.সেটস্কেল (স্কেল, স্কেল); imageView.setImageMatrix (imageMatrix); সত্য প্রত্যাবর্তন; }}}

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

বহু-স্পর্শ অঙ্গভঙ্গি পরিচালনা করা

কিছু অঙ্গভঙ্গির জন্য আপনাকে একাধিক পয়েন্টার ব্যবহার করতে হবে, যেমন চিমটি অঙ্গভঙ্গি। প্রতিবার একাধিক পয়েন্টার স্ক্রিনের সাথে যোগাযোগ করলে, অ্যান্ড্রয়েড উত্পন্ন করে:

  • স্ক্রিনটি স্পর্শ করে এমন প্রথম পয়েন্টারের জন্য একটি অ্যাকশন_ডাউন ইভেন্ট।
  • পরবর্তী সমস্তগুলির জন্য একটি ACTION_POINTER_DOWN, অ প্রাথমিক-পয়েন্টার যে পর্দার সাথে যোগাযোগ করুন।
  • একটি ACTION_POINTER_UP, যখনই স্ক্রিন থেকে একটি অ প্রাথমিক-পয়েন্টার সরানো হয়।
  • শেষ পয়েন্টারটি স্ক্রিনের সাথে যোগাযোগ ভাঙলে একটি ACTION_UP ইভেন্ট।

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

আমদানি android.app.Activity; আমদানি android.util.Log; আমদানি অ্যান্ড্রয়েড.ভিউ.মোশনএভেন্ট; আমদানি androidx.core.view. মোশনইভেন্টকম্প্যাট; সার্বজনীন বর্গ মাইনএটিভিটি ক্রিয়াকলাপ বাড়ায় {পাবলিক স্ট্যাটিক ফাইনাল স্ট্রিং TAG = "একক মাল্টি"; @ ওভাররাইড পাবলিক বুলিয়ান অন টাচএভেন্ট (মোশনইভেন্ট ইভেন্ট) action ইন অ্যাকশন = মোশনইভেন্টকম্প্যাট.জেটঅ্যাকশনমাস্কড (ইভেন্ট); স্ট্রিং অ্যাকশনকোড = ""; স্যুইচ (ক্রিয়া) {কেস মোশনইভেন্ট Aঅ্যাকশন_ডাউন: অ্যাকশনকোড = "ডাউন"; বিরতি; কেস মোশনইভেন্ট। অ্যাকশন_POINTER_DOWN: ক্রিয়াকোড = "পয়েন্টার ডাউন"; বিরতি; কেস মোশনইভেন্ট। অ্যাকশন_মোভ: অ্যাকশনকোড = "সরান"; বিরতি; কেস মোশনইভেন্ট। অ্যাকশন_আপ: অ্যাকশনকোড = "আপ"; বিরতি; কেস মোশনইভেন্ট। অ্যাকশন_POINTER_UP: অ্যাকশনকোড = "পয়েন্টার আপ"; বিরতি; কেস মোশনইভেন্ট.এ্যাকশন_আউটিএসইডি: অ্যাকশনকোড = "বাইরে"; বিরতি; কেস মোশনইভেন্ট। অ্যাকশন_সিএনএসএল: অ্যাকশনকোড = "বাতিল করুন"; বিরতি; } লগ.আই (TAG, "ক্রিয়াটি হ'ল:" + অ্যাকশনকোড); int সূচি = মোশনইভেন্টকম্প্যাট.জেটঅ্যাকশনআইডেক্স (ইভেন্ট); int xPos = -1; int yPos = -1; যদি (ইভেন্ট.getPointerCount ()> 1) {লগ.আই (TAG, "মাল্টি টাচ ইভেন্ট"); } অন্য {লগ.আই (ট্যাগ, "একক স্পর্শ ইভেন্ট"); সত্য প্রত্যাবর্তন; } এক্সপোস = (ইনট্রি) মোশনইভেন্টকম্প্যাট.জেটএক্স (ইভেন্ট, সূচি); yPos = (int) মোশনইভেন্টকম্প্যাট.জেটিওয়াই (ইভেন্ট, সূচি); লগ.আই (TAG, "x অবস্থান:" + xPos + ", y অবস্থান:" + yPos); সত্য প্রত্যাবর্তন; }}

ভিউগ্রুপে অঙ্গভঙ্গি পরিচালনা করা

কোনও ভিউগ্রুপের মধ্যে স্পর্শ ইভেন্টগুলি পরিচালনা করার সময়, ভিউগ্রুপের এমন পিতামাতাগুলির ভিউগ্রুপের চেয়ে আলাদা স্পর্শ ইভেন্টের লক্ষ্যবস্তুতে এমন শিশু থাকতে পারে।

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

আরও পড়ুন:

যদি অনিটারসেপ্ট টাচ এভেন্ট () পদ্ধতিটি সত্য ফিরে আসে, তবে সেই শিশু দৃষ্টিভঙ্গি যা পূর্বে স্পর্শ ইভেন্টটি পরিচালনা করত তা একটি অ্যাকশন_সেনসেল পাবে এবং পরিবর্তে এই ইভেন্টটি পিতামাতার অন-টাচ ইভেন্টে () পদ্ধতিতে প্রেরণ করা হবে।

উদাহরণস্বরূপ, নিম্নলিখিত স্নিপেটে আমরা সিদ্ধান্ত নিচ্ছি যে এটি কোনও স্ক্রোলিং ইভেন্ট কিনা তার ভিত্তিতে কোনও স্পর্শ ইভেন্টকে আটকানো হবে কিনা:

@ ওভাররাইড পাবলিক বুলিয়ান onIntercepTouchEvent (মোশনইভেন্ট ইভ) {চূড়ান্ত ইন অ্যাকশন = মোশনইভেন্টকম্প্যাট.জেটঅ্যাকশনমাস্কড (ev); if (ক্রিয়া == মোশনএভেন্ট। অ্যাকশন_সিএনএসএল || ক্রিয়া == মোশনএভেন্ট। অ্যাকশন_আপ) I এমআইএসক্রোলিং = মিথ্যা; // স্পর্শ ইভেন্টটি বাধা দেবেন না // মিথ্যা প্রত্যাবর্তন; } স্যুইচ (ক্রিয়া) {কেস মোশনএভেন্ট A অ্যাকশন_মোভ: {যদি (এমআইএসস্ক্রোলিং) {// স্পর্শ ইভেন্টটি বিরত করুন // সত্য ফিরে আসুন; }} ... ... ... মিথ্যা প্রত্যাবর্তন; Ou @ ওভাররাইড পাবলিক বুলিয়ান অন টাচএভেন্ট (মোশনইভেন্ট ইভ) {// করণীয়: স্পর্শ ইভেন্টটি হ্যান্ডেল করুন //}}

আপনার অ্যান্ড্রয়েড ডিভাইসে এই অ্যাপ্লিকেশনটি চালান, এবং লগক্যাট আউটপুটটিকে এর মতো দেখতে পাওয়া উচিত:

আপনার অ্যাপটিকে একটি সহজ টার্গেট করুন: স্পর্শযোগ্য অঞ্চলগুলি প্রসারিত করা

কখনও কখনও হিট আয়তক্ষেত্র হিসাবে উল্লেখ করা ভিউ এর স্পর্শযোগ্য অঞ্চলটির আকার প্রসারিত করে আপনি ছোট UI উপাদানগুলির সাথে সহজেই যোগাযোগ করতে পারবেন। বিকল্পভাবে, যদি আপনার ইউআইতে একাধিক ইন্টারেক্টিভ ইউআই উপাদান থাকে, তবে ব্যবহারকারীদের "ভুল" দৃষ্টিভঙ্গি থেকে আটকাতে সহায়তা করতে আপনি তাদের স্পর্শযোগ্য লক্ষ্যগুলি সঙ্কুচিত করতে পারেন।

টাচডেলিগেট ক্লাসটি ব্যবহার করে আপনি শিশু ভিউয়ের স্পর্শযোগ্য ক্ষেত্রের আকারের আকারটি ঝাপটিয়ে দিতে পারেন।

আসুন একটি বোতাম তৈরি করুন এবং তারপরে দেখুন আমরা কীভাবে এই বোতামটির স্পর্শযোগ্য অঞ্চলটিকে প্রসারিত করব।

দেখার স্পর্শযোগ্য অঞ্চল পরিবর্তন করতে আমাদের নিম্নলিখিত পদক্ষেপগুলি পূরণ করতে হবে:

1. পিতামাতার দেখুনটি পুনরুদ্ধার করুন এবং ইউআই থ্রেডে একটি রান্নেবল পোস্ট করুন

আমরা getHitRect () পদ্ধতিটি কল করার আগে এবং সন্তানের স্পর্শযোগ্য অঞ্চল পুনরুদ্ধার করার আগে, আমাদের পিতামাতাকে তার সন্তানের ছাঁটাই করেছে তা নিশ্চিত করতে হবে ভিউ:

প্যারেন্টভিউ.পোস্ট (নতুন রান্নেবল () {@ ওভাররাইড পাবলিক অকার্যকর রান () ect রেক্ট ডেলিগেটএরিয়া = নতুন রেক্ট ();

2. সন্তানের স্পর্শযোগ্য ক্ষেত্রের সীমা পুনরুদ্ধার করুন

GetHitRect () পদ্ধতিটি ব্যবহার করে আমরা বোতামের বর্তমান স্পর্শযোগ্য লক্ষ্যটি পুনরুদ্ধার করতে পারি:

রেক্ট ডেলিগেটএরিয়া = নতুন রেক্ট (); বোতাম মাইবাটন = (বাটন) সন্ধান ভিউবিআইআইডি (আর.আইডি.বাটন); ... ... ... myButton.getHitRect (প্রতিনিধিআরিয়া);

৩. স্পর্শযোগ্য ক্ষেত্রের সীমানা প্রসারিত করুন

এখানে, আমরা নীচে এবং ডান হাতের বোতামের স্পর্শযোগ্য লক্ষ্যটিকে বাড়িয়ে দিচ্ছি:

প্রতিনিধিআরিয়া.রাইট + = 400; প্রতিনিধিআরিয়া.বটম + = 400;

4. একটি টাচডেলিগেট ইনস্ট্যান্ট করুন

শেষ অবধি, আমাদের অ্যান্ড্রয়েডের টাচডেলিগেট শ্রেণীর উদাহরণে প্রসারিত স্পর্শযোগ্য লক্ষ্যটি পাস করতে হবে:

টাচডেলিগেট টাচডেলিগেট = নতুন টাচডেলিগেট (ডেলিগেটএরিয়া, মাইবটন); if (View.class.isInstance (myButton.getParent ())) {((দেখুন) myButton.getParent ()) সেটআপ টাচডেলিগেট (টাচডেলিগেট);

এখানে আমাদের সম্পূর্ণ কার্যকারিতা রয়েছে:

আমদানি androidx.appcompat.app.appCompatActivity; আমদানি android.os.Bundle; আমদানি android.widget.Button; আমদানি android.view.TouchDelegate; আমদানি অ্যান্ড্রয়েড.ভিউ.ভিউ; আমদানি android.widget.Toast; আমদানি android.ographicics.Rect; সার্বজনীন শ্রেণীর মেইনঅ্যাক্টিভিটি অ্যাপকোম্প্যাটএটিভিটি প্রসারিত করে {@ ওভাররাইড সুরক্ষিত শূন্য অনকারেট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); setContentView (R.layout.activity_main); প্যারেন্টভিউ দেখুন = সন্ধান ভিউআইআইডি (আর.আইডি.বাটন); প্যারেন্টভিউ.পোস্ট (নতুন রান্নেবল () {@ ওভাররাইড পাবলিক অকার্যকর রান () ect রেক্ট ডেলিগেটএরিয়া = নতুন রেক্ট (); বাটন মাইবাটন = (বাটন) সন্ধান ভিউবিআইডি (আর.আইডি.বাটন); মাই বাটন.সেটএনেবল (সত্য); মাই বাটন.সেটনক্লিকলিটনার (নতুন দেখুন.অনিক্লিকলিস্টার () {@ ওভাররাইড পাবলিক শূন্য অনক্লিক (ভিউ দেখুন) {টোস্ট.মেকটেক্সট (মেইনঅ্যাক্টিভিটি.এটি, "বোতাম ক্লিক করুন", টোস্ট.এলএনজিএইচটিএসএইচআরটি) .শো ();}}); মাইবটোন.জিটহিটরেট (প্রতিনিধি) ; ডেলিগেটএরিয়া.সাইট +৪০০; ডেলিগেটআরিয়া.বটম +৪০০ + টাচডেলিগেট টাচডেলিগেট = নতুন টাচডেলিগেট (ডেলিগেটআরিয়া, মাইবটন); যদি (ভিউ.ক্লাস.আইস ইনসট্যান্স (মাইবাটন.জেট প্যারেন্ট ())) {((দেখুন) মাইবাটন.জেট প্যারেন্ট ( ))। setTouchDelegate (টাচডেলিগেট);}}}); }}

আপনার অ্যান্ড্রয়েড ডিভাইসে এই প্রকল্পটি ইনস্টল করুন এবং আলতো চাপুন কাছাকাছি বোতামের ডান এবং নীচে - যেহেতু আমরা স্পর্শযোগ্য অঞ্চলটিকে একটি উল্লেখযোগ্য পরিমাণে প্রসারিত করেছি, আপনি যখনই কোথাও ট্যাপ করবেন তখন টোস্টটি উপস্থিত হওয়া উচিত কাছাকাছি বোতামটি.

অ্যান্ড্রয়েড 10 এর নতুন নেভিগেশনাল মডেল: অঙ্গভঙ্গি-ভিত্তিক নেভিগেশন

আইপিএল স্তর 29 দিয়ে শুরু করে, অ্যান্ড্রয়েড পুরো অঙ্গভঙ্গি ভিত্তিক নেভিগেশন সমর্থন করে।

অ্যান্ড্রয়েডের সর্বশেষতম এবং দুর্দান্ততম সংস্করণে ব্যবহারকারীরা একাই অঙ্গভঙ্গি ব্যবহার করে নিম্নলিখিত ক্রিয়াগুলি ট্রিগার করতে সক্ষম হবেন:

  • পিছনে। স্ক্রিনের বাম বা ডান প্রান্ত থেকে ভিতরে সোয়াইপ করুন।
  • বাড়ি। পর্দার নীচে থেকে সোয়াইপ করুন।
  • সহকারী প্রবর্তন করুন। স্ক্রিনের নীচের কোণ থেকে সোয়াইপ করুন।

অ্যান্ড্রয়েড 10 প্রথাগত 3-বাটন নেভিগেশন সমর্থন অব্যাহত রাখবে, তাই ব্যবহারকারীরা যদি তারা পছন্দ করেন তবে বোতাম-ভিত্তিক নেভিগেশনে ফিরে যেতে বিকল্প থাকবে vert

গুগলের মতে, অঙ্গভঙ্গি-ভিত্তিক নেভিগেশন অ্যান্ড্রয়েড 10 এবং উচ্চতরর জন্য ডিফল্ট হবে, সুতরাং আপনার অ্যাপ্লিকেশনটি অ্যান্ড্রয়েডের নতুন অঙ্গভঙ্গি-ভিত্তিক মডেলটির সাথে একটি ভাল ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করে তা নিশ্চিত করতে হবে।

আপনার UI প্রান্ত থেকে প্রান্তে নিন

অঙ্গভঙ্গি-ভিত্তিক নেভিগেশন আপনার অ্যাপ্লিকেশনে স্ক্রিনের আরও অনেক কিছু উপলভ্য করে, যাতে আপনি আপনার অ্যাপ্লিকেশনটির সামগ্রী প্রান্ত থেকে প্রান্তকে প্রসারিত করে আরও মগ্ন অভিজ্ঞতা সরবরাহ করতে পারেন।

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

ভিউ.সেটসিসটেমউইভিজিবিলিটি () পদ্ধতি এবং SYSTEM_UI_FLAG_LAYOUT_STABLE এবং SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION পতাকা ব্যবহার করে আপনি সিস্টেমটিকে বারের আড়ালে আপনার অ্যাপটি আড়াতে বলতে পারেন। উদাহরণ স্বরূপ:

ভিউ.সেটসটিউইউইভিজিবিলিটি (দেখুন.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | দেখুন.SYSTEM_UI_FLAG_LAYOUT_STABLE);

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

সিস্টেম বারটিকে স্বচ্ছ করে তোলা হচ্ছে

একবার আপনার অ্যাপ্লিকেশনটি প্রান্ত থেকে প্রান্তটি প্রদর্শন করার পরে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে ব্যবহারকারী আপনার অ্যাপ্লিকেশনটির সামগ্রী বারের আড়ালে দেখতে পাবে।

সিস্টেম বারগুলি সম্পূর্ণ স্বচ্ছ করতে আপনার থিমটিতে নিম্নলিখিতগুলি যুক্ত করুন:

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

পরস্পরবিরোধী অঙ্গভঙ্গির জন্য পরীক্ষা করুন

আপনাকে পরীক্ষা করে দেখতে হবে যে অ্যান্ড্রয়েডের নতুন অঙ্গভঙ্গি-ভিত্তিক নেভিগেশন সিস্টেমটি আপনার অ্যাপের বিদ্যমান অঙ্গভঙ্গিগুলির সাথে বিরোধ করছে না।

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

যদি পরীক্ষণটি অঙ্গভঙ্গি দ্বন্দ্ব প্রকাশ করে তবে আপনি নিজের অ্যাপ্লিকেশনের মধ্যে এমন জায়গাগুলির একটি তালিকা সরবরাহ করতে পারেন যেখানে ব্যাক অঙ্গভঙ্গি হিসাবে সিস্টেমের স্পর্শ ইভেন্টগুলি ব্যাখ্যা করা উচিত নয়।

এই তালিকা সরবরাহ করতে বর্জন rects, উদাহরণস্বরূপ, অ্যান্ড্রয়েডের নতুন ভিউ.সেট সিস্টেম সিস্টেম অঙ্গভঙ্গি রেকর্ডস () পদ্ধতিতে একটি তালিকা পাস করুন:

তালিকা বাদ পড়ুন; লেআউট অন সার্বজনীন (বুলিয়ান চেঞ্জড ক্যানভাস, ইন বাম, ইন টপ, ইন ডান, ইনট নীচে) {সেট সিস্টেমজেষ্টার এক্সক্লুশন রেক্টস (বর্জনীয় চিহ্ন); ra পাবলিক শূন্য অনড্র (ক্যানভাস ক্যানভাস) {সেট সিস্টেমজেষ্টার এক্সক্লুশনরেটস (বর্জনীয় চিহ্ন); }

নোট করুন যে আপনার কেবলমাত্র এমন দৃশ্যের জন্য ব্যাক অঙ্গভঙ্গিটি অক্ষম করতে হবে যা একটি ছোট অঞ্চলের মধ্যে যথাযথ অঙ্গভঙ্গির প্রয়োজন, ব্রড অঞ্চল বা সরল ট্যাপ লক্ষ্যগুলি যেমন বাটনগুলির জন্য নয় ons

অ্যান্ড্রয়েড 10 এর হোম ইশারা সম্পর্কে কী?

লেখার সময়, অ্যান্ড্রয়েড 10 এর হোম ইশারাটি (পর্দার নীচে থেকে সোয়াইপ করা) থেকে বেরিয়ে আসা সম্ভব নয়। যদি আপনি হোম অঙ্গভঙ্গির সাথে সমস্যার মুখোমুখি হন, তবে উইন্ডোআইনেসেটস.গেটম্যান্ডেটরিস্টেমগাস্টারআইনেসেটস () ব্যবহার করে স্পর্শ স্বীকৃতি প্রান্তিক স্থাপন করা একটি সম্ভাব্য কাজের কাজ।

গেমিং অ্যাপ্লিকেশনগুলির জন্য অঙ্গভঙ্গি-ভিত্তিক নেভিগেশন

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

যদি আপনি আপনার গেমিং অ্যাপটিতে অঙ্গভঙ্গি দ্বন্দ্বের মুখোমুখি হয়ে থাকেন তবে আপনি উইন্ডো.সেটসিসটেমগাস্টারএকসকলেশনআরেক্টস () পদ্ধতিটি এমন জায়গাগুলির একটি তালিকা প্রদানের জন্য ব্যবহার করেন যেখানে সিস্টেমটি স্পর্শ ইভেন্টগুলিকে ব্যাক অঙ্গভঙ্গি হিসাবে ব্যাখ্যা করা উচিত নয়।

বিকল্পভাবে, আপনি অনুরোধ করতে পারেন আপনার আবেদনটি নিমজ্জন মোডে রেখে দেওয়া হয়েছে, যা সমস্ত সিস্টেম অঙ্গভঙ্গি অক্ষম করে dis

আপনি সেটসিস্টেমউইভিজিবিলিটি () কল করে এবং পরে নীচের পতাকাগুলি পাশ করে নিমজ্জন মোড সক্ষম করতে পারবেন:

  • SYSTEM_UI_FLAG_FULLSCREEN। সমস্ত অ-সমালোচনামূলক সিস্টেম উপাদানগুলি গোপন করা হবে, আপনার অ্যাপ্লিকেশনটির সামগ্রীটিকে পুরো স্ক্রিনটি দখল করতে দেয়।
  • SYSTEM_UI_FLAG_HIDE_NAVIGATION। সিস্টেম নেভিগেশন অস্থায়ীভাবে আড়াল করুন।
  • SYSTEM_UI_FLAG_IMMERSIVE। স্থিতি দণ্ডটি লুকানো থাকলে এই দৃশ্যটি ইন্টারেক্টিভ থাকা উচিত। মনে রাখবেন যে এই পতাকাটির কোনও প্রভাব পড়ার জন্য এটি অবশ্যই SYSTEM_UI_FLAG_HIDE_NAVIGATION এর সাথে ব্যবহার করতে হবে।

নিমজ্জন মোড চলাকালীন, ব্যবহারকারী পর্দার নীচ থেকে সোয়াইপ করে যে কোনও সময়ে সিস্টেম অঙ্গভঙ্গিগুলি পুনরায় সক্ষম করতে পারে।

সেরা অনুশীলন: অঙ্গভঙ্গি কার্যকরভাবে ব্যবহার করা

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

আপনার ব্যবহারকারীদের অনুমান করে ছেড়ে যাবেন না: ইন্টারেক্টিভ উপাদানগুলি হাইলাইট করুন

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

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

বিকল্পভাবে, আপনি আরও স্পষ্ট হয়ে উঠতে এবং আইকনগুলি ব্যবহার করতে পারেন, যেমন এমন তীর যা দেখায় যে ব্যবহারকারীকে পরবর্তীটির সাথে ইন্টারঅ্যাক্ট করতে হবে to

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

রূপান্তরকারী অঙ্গভঙ্গির জন্য অ্যানিমেশনগুলি ব্যবহার করুন

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

অগ্রগতিমূলক ক্রিয়াকলাপের জন্য ভিজ্যুয়াল সংকেত সরবরাহ করা

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

সম্পন্ন কর্মের ইঙ্গিত দিয়ে যখন ব্যবহারকারী ক্রিয়া অঙ্গভঙ্গিটি সম্পাদন করছে, ফলাফল যদি তারা প্রত্যাশা না করে তবে আপনি তাদের ইশারাটি বন্ধ করার সুযোগ দিচ্ছেন।

এই অ্যান্ড্রয়েড অঙ্গভঙ্গি টিউটোরিয়াল মোড়ানো

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

আপনার অ্যাপ্লিকেশনটিতে অ্যান্ড্রয়েড অঙ্গভঙ্গি ব্যবহারের জন্য এখন কী সেরা অনুশীলন রয়েছে? নীচের মতামত আমাদের জানতে দিন!

তিনটি 2019 এর দ্বিতীয়ার্ধে 25 টি শহরে এর 5G নেটওয়ার্ক চালু করবে। এটি 5 জি মোবাইল ব্রডব্যান্ড দিয়ে শুরু হবে এবং বছরের পরের দিকে ফোন অ্যাক্সেস অনুসরণ করবে। আপনি যদি ফোনের বাইরেও তাকান তবে এটি প্রযুক্...

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

দেখো