আপনার ঘড়ির মুখের জন্য মেমরি ব্যবহার অপ্টিমাইজ করুন

Wear OS ডিভাইসের সর্বোত্তম সম্ভাব্য ব্যাটারি লাইফ প্রদান করতে, সিস্টেমটি মেমরি ব্যবহারের গণনা করে। Wear OS অ্যাপের গুণমানের নির্দেশিকাগুলির অংশ হিসাবে, ঘড়ির বর্তমান অবস্থার উপর নির্ভর করে যে ঘড়ির মুখগুলি ওয়াচ ফেস ফর্ম্যাট ব্যবহার করে তাদের মেমরির পরিমাণের সীমা রয়েছে:

  • পরিবেষ্টিত মোডে , ঘড়ির মুখ 10 MB এর বেশি মেমরি গ্রহণ করতে পারে না।
  • ইন্টারেক্টিভ মোডে, ঘড়ির মুখ 100 MB এর বেশি মেমরি গ্রহণ করতে পারে না।

সিস্টেম একটি ঘড়ির মুখের মেমরি ব্যবহার গণনা করে

ওয়াচ ফেস ফর্ম্যাট ব্যবহার করে এমন একটি ঘড়ির মুখের মধ্যে একটি চিত্র বা বিটম্যাপ ফন্ট দ্বারা নেওয়া আকার গণনা করতে, সিস্টেমটি নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন করে:

  1. ছবি বা বিটম্যাপ ফন্ট ডিকম্প্রেস করে।
  2. নিচের কোন একটি উপায়ে অপ্টিমাইজ করা যায় কিনা তা দেখতে ইমেজ বা বিটম্যাপ ফন্ট পরীক্ষা করে:
    • এর ডিসপ্লে সাইজকে আরও ভালোভাবে মেলানোর জন্য রিসাইজ করা হয়েছে।
    • সম্পূর্ণ স্বচ্ছ পিক্সেল সরাতে ক্রপ করা হয়েছে।
    • RGB565 তে নামিয়ে দেওয়া হয়েছে, যদি এটি বিশ্বস্ততা হারানো ছাড়াই করা যায়।

ফলস্বরূপ বাউন্ডিং বাক্সের উপর ভিত্তি করে, সিস্টেমটি চিত্র বা বিটম্যাপ ফন্টের আকার, বাইটে, নিম্নলিখিতগুলির মধ্যে একটি হিসাবে গণনা করে:

  • RGBA8888 : \( 4 \times width \times height \)ব্যবহার করে এমন ছবি এবং ফন্টের জন্য
  • RGB565 ব্যবহার করে এমন ছবি এবং ফন্টের জন্য: \( 2 \times width \times height \)
  • ছবি এবং ফন্টের জন্য যেগুলি ALPHA_8 বিটম্যাপ কনফিগারেশন ব্যবহার করে:\( width \times height \)

ইন্টারেক্টিভ মোড

ইন্টারেক্টিভ মোডের জন্য মেমরি ব্যবহার গণনা করার সময়, সিস্টেম নিম্নলিখিতগুলির যোগফল গণনা করে:

  1. যেকোনো ভেক্টর ফন্টের অপ্রসেসড সাইজ।
  2. সিস্টেমের ডিফল্ট ফন্টের আনুমানিক ব্যবহার।
  3. যে কোনো ক্রপিং, রিসাইজ বা রিফরম্যাটিং প্রয়োগ করার পর ইমেজ এবং বিটম্যাপ ফন্টের মোট আকার।

কনফিগারেশন

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

পরিবেষ্টিত মোড এবং স্তর

পরিবেষ্টিত মোডের জন্য, সিস্টেমটি ধরে নেয় যে ঘড়িটি তিনটি পূর্ণ স্ক্রীন স্তর পর্যন্ত ব্যবহার করে রেন্ডার করা হয়েছে, যার মধ্যে দুটি সম্পূর্ণরূপে স্থির:

  1. ঘড়ির উপাদানের নীচে সবকিছু। ঘড়ির মুখের বেশিরভাগ "বডি" এই স্তরে সংমিশ্রিত হয়। এই স্তরটি আঁকার জন্য কতগুলি চিত্র ব্যবহার করা হয়েছে তা বিবেচ্য নয়; সিস্টেম এটিকে একটি পূর্ণ-স্ক্রীন চিত্র হিসাবে গণনা করে।
  2. যেকোনো ঘড়ির হাত, ডিজিটাল ডিসপ্লে, বা প্ল্যাটফর্ম বাইন্ডিংয়ের সাথে জটিলতা যা গতিশীলভাবে রেন্ডার করা হয়।
  3. উৎস XML ফাইলে ঘড়ির হাত এবং জটিলতার পরে তালিকাভুক্ত সমস্ত উপাদান।

সাধারণত, পরিবেষ্টিত মোডে বেশিরভাগ মেমরি ব্যবহার বিটম্যাপ ফন্টগুলি থেকে আসে, বিশেষ করে বড়গুলি।

মেমরি ব্যবহার কমানোর পদ্ধতি

এই বিভাগগুলির পরামর্শগুলি অনুসরণ করে, আপনি একটি ঘড়ির মুখ তৈরি করতে পারেন যার মেমরি খরচ এই সীমার মধ্যে থাকে৷

বিটম্যাপ ফন্ট ক্রপ এবং রিসাইজ করুন

আপনার ছবি এবং BitmapFont অবজেক্টগুলি ক্রপ করুন এবং তাদের ডিসপ্লে আকারের সাথে মেলে তাদের আকার পরিবর্তন করুন।

যখন Wear OS একটি ঘড়ির মুখ আঁকে, তখন সমস্ত ছবি ডিকম্প্রেস করা হয়। একটি পূর্ণ-স্ক্রীন চিত্র যা বেশিরভাগ ফাঁকা থাকে তা ডিস্কে 3 KB খরচ করতে পারে, কিন্তু যদি এটি একটি 450-পিক্সেল x 450-পিক্সেল স্ক্রিনে প্রদর্শিত হয়, তবে সিস্টেমটি ছবিটিকে ডিকম্প্রেস করে, মেমরিতে ছবির আকার 750 KB বা বড় করে।

সামঞ্জস্যপূর্ণ বিটম্যাপ ফন্ট উচ্চতা ব্যবহার করুন

একটি BitmapFont ব্যবহার করার সময়, একটি অক্ষরের জন্য সমস্ত চিত্রের প্রতিটির উচ্চতা একই হওয়া উচিত। একইভাবে, শব্দের জন্য সমস্ত চিত্রের প্রতিটি একই উচ্চতা হওয়া উচিত।

অ্যানিমেশনে সামঞ্জস্যপূর্ণ ফ্রেম আকার ব্যবহার করুন

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

এই কৌশলটি বাউন্ডিং বাক্সের আকার হ্রাস করে যা সিস্টেম অ্যানিমেশনের জন্য গণনা করে।

ডিডুপ্লিকেট ছবি

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

আর্কস ব্যবহার করে অগ্রগতি দেখান

একটি অগ্রগতি বার অনুকরণ করতে যা 1 মিনিট বা 1 ঘন্টা পরে সম্পূর্ণ হয়, 60টি আলাদা ছবি ব্যবহার করবেন না। পরিবর্তে, একটি Arc অবজেক্ট তৈরি করুন যাতে একটি এক্সপ্রেশন রয়েছে যা এর দৈর্ঘ্য নিয়ন্ত্রণ করে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

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

সোর্স ফাইলের শেষে ঘড়ির হাত এবং জটিলতা রাখুন

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

আপনার ঘড়ির মুখের মেমরি ব্যবহার মূল্যায়ন করুন

আপনার ঘড়ির মুখের মেমরি ব্যবহার পরিমাপ করতে, মেমরি ফুটপ্রিন্ট মূল্যায়নকারী সরঞ্জামটি ব্যবহার করুন, গিটহাবের watchface সংগ্রহস্থলে উপলব্ধ।

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}