যখন আপনার একটি সু-পরিকল্পিত ভিউ থাকে যা অঙ্গভঙ্গি এবং বিভিন্ন অবস্থার মধ্যে পরিবর্তনে সাড়া দেয়, তখন নিশ্চিত করুন যে ভিউটি দ্রুত চলে। প্লেব্যাকের সময় UI যাতে ধীর বা আটকে না যায়, সেজন্য নিশ্চিত করুন যে অ্যানিমেশনগুলো ধারাবাহিকভাবে প্রতি সেকেন্ডে ৬০ ফ্রেমে চলে।
আপনার দেখার গতি বাড়ান।
আপনার ভিউয়ের গতি বাড়াতে, ঘন ঘন কল করা হয় এমন রুটিনগুলো থেকে অপ্রয়োজনীয় কোড বাদ দিন। onDraw() দিয়ে শুরু করুন, যা আপনাকে সবচেয়ে বেশি সুবিধা দেবে। বিশেষ করে, onDraw() এর মধ্যে অ্যালোকেশন বাদ দিন, কারণ অ্যালোকেশনের ফলে গার্বেজ কালেকশন হতে পারে যা স্টাটার বা আটকে যাওয়ার কারণ হয়। ইনিশিয়ালাইজেশনের সময় বা অ্যানিমেশনের মাঝে অবজেক্ট অ্যালোকেট করুন। কোনো অ্যানিমেশন চলার সময় কখনোই অ্যালোকেশন করবেন না।
onDraw() আরও সংক্ষিপ্ত করার পাশাপাশি, এটি যেন যথাসম্ভব কম কল করা হয় তা নিশ্চিত করুন। বেশিরভাগ ক্ষেত্রে onDraw() কল invalidate() কলের ফলস্বরূপ হয়ে থাকে, তাই invalidate() এর অপ্রয়োজনীয় কলগুলো বাদ দিন।
আরেকটি অত্যন্ত ব্যয়বহুল অপারেশন হলো লেআউট ট্র্যাভার্স করা। যখন কোনো ভিউ requestLayout() কল করে, তখন অ্যান্ড্রয়েড UI সিস্টেম প্রতিটি ভিউয়ের আকার কত হওয়া উচিত তা খুঁজে বের করার জন্য সম্পূর্ণ ভিউ হায়ারার্কি ট্র্যাভার্স করে। যদি এটি পরিমাপে অমিল খুঁজে পায়, তবে এটি একাধিকবার হায়ারার্কি ট্র্যাভার্স করতে পারে। UI ডিজাইনাররা কখনও কখনও নেস্টেড ViewGroup অবজেক্টের গভীর হায়ারার্কি তৈরি করেন। এই গভীর ভিউ হায়ারার্কিগুলো পারফরম্যান্সের সমস্যা সৃষ্টি করে, তাই আপনার ভিউ হায়ারার্কিগুলো যতটা সম্ভব অগভীর রাখুন।
আপনার UI জটিল হলে, এর লেআউট সম্পাদনের জন্য একটি কাস্টম ViewGroup লেখার কথা বিবেচনা করতে পারেন। বিল্ট-ইন ভিউগুলোর থেকে ভিন্ন, আপনার কাস্টম ভিউ তার চাইল্ডগুলোর আকার ও আকৃতি সম্পর্কে অ্যাপ্লিকেশন-নির্দিষ্ট অনুমান করতে পারে এবং এর ফলে পরিমাপ গণনা করার জন্য চাইল্ডগুলোকে ট্র্যাভার্স করা এড়াতে পারে।
উদাহরণস্বরূপ, যদি আপনার একটি কাস্টম ViewGroup থাকে যা তার সমস্ত চাইল্ড ভিউয়ের সাথে মানিয়ে নেওয়ার জন্য নিজের আকার পরিবর্তন করে না, তাহলে আপনি সমস্ত চাইল্ড ভিউ পরিমাপ করার অতিরিক্ত কাজটি এড়াতে পারেন। এই অপ্টিমাইজেশনটি সম্ভব নয় যদি আপনি বিল্ট-ইন লেআউটগুলি ব্যবহার করেন যা বিভিন্ন ধরণের ব্যবহারের জন্য উপযুক্ত।