কোনও রিলেটিভলআউট কি লিনিয়ারলআউটের চেয়ে বেশি ব্যয়বহুল?


114

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

এটি করা ঠিক কি, অথবা আমি যখন পারফরম্যান্স / ভাল অনুশীলনের দিক থেকে পারি তখন লিনিয়ারলআউট ব্যবহার করার চেষ্টা করা উচিত?

ধন্যবাদ!

উত্তর:


149

গুগল আই / ও ২০১৩ (অ্যান্ড্রয়েডের জন্য কাস্টম ভিউগুলি লেখার ক্ষেত্রে) একটি আলাপে রোমেন গাই সেই ভুল বোঝাবুঝির বিষয়টি স্পষ্ট করে বলেছেন যার ফলে প্রত্যেককেই সমস্ত কিছুর জন্য RelativeLayouts ব্যবহার করা শুরু হয়েছিল। একটি রিলেটিভলআউটকে সর্বদা দুটি পরিমাপ পাস করতে হয়। সামগ্রিকভাবে এটি ততক্ষণ ততক্ষণ ততক্ষণ ততক্ষণ আপনার দৃষ্টিভঙ্গি সরল। তবে যদি আপনার শ্রেণিবিন্যাস জটিল হয় তবে অতিরিক্ত পরিমাপ পাস করা মোটামুটি ব্যয়বহুল হতে পারে। এছাড়াও আপনি যদি রিলেটিভলআউটগুলিতে বাসা বেঁধেন তবে আপনি একটি ঘনিষ্ঠ পরিমাপের অ্যালগরিদম পান।

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s


8
আমি জানি এটি একটি পুরানো পোস্ট, তবে আপনি কোনও একক আপেক্ষিক এবং ২-৩ লিনিয়ারলেটের মধ্যে নির্বাচন করার সময় সর্বনিম্ন ব্যয়বহুল সমাধান হিসাবে কী বিবেচনা করবেন?
ল্যাংকিলার

5
একটি কনস্ট্রেন্টলয়েট :)
ময়হেইন

52

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

এবং দক্ষ লেআউটগুলি তৈরি সম্পর্কে অফিসিয়াল ডক্সগুলি আপেক্ষিক লেআউট এবং লিনিয়ারলআউট এর কার্যকারিতা সম্পর্কে যা বলেছে তা এখানে :

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


3
এর ন্যায্যতা কি নগণ্য? আমি যা এই যুক্তরাষ্ট্রের relativeLayout আরো ঠিক যেমন আমি সন্দেহভাজন খরচ পাওয়া bitbucket.org/spencerelliott/mercury/issue/1/...
max4ever

কেবল অভ্যন্তরীণ পাত্রে যুক্ত এড়াতে হবে।
লুইস পেনা

2

লিনিয়ারলআউটের তুলনায় রিলেটিভলিআউট বেশি কার্যকর।

থেকে এখানে :

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


2
@ ফ্রেইকহেড আপনি ঠিক বলেছেন যে কোনও একক "সঠিক" সমাধান নেই। যে কারণে "সঠিক" সমাধানটি প্রায়শই পুরোপুরি পারফরম্যান্স সম্পর্কে ভুলে যাওয়া এবং যা লিখতে এবং পড়তে সহজ is
কেভিন ক্রামউইদে

3
সেই উদ্ধৃতিটি আপনার বক্তব্যটিকে ব্যাক আপ করবে না, যা কেবলমাত্র এক পরিস্থিতিতেই সত্য
ফ্লু উই

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

1

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


যেহেতু সর্বশেষতম সংস্করণটি এটি খুব ধীর হয়ে গিয়েছিল
ড্রাগোস রাছিয়ারু

এটি কীভাবে ব্যবহৃত হবে তার উপর নির্ভর করে। আপনার নিখুঁত অবস্থান এবং এড়াতে বাধা এড়ানো উচিত।
akelec

-25

আপনি চেষ্টা করতে পারেন

<LinearLayout>
       <ViewPager/><!--Loading images from net, it is very good as a testing case.-->
       <ViewPagerIndicator/>
       <TextView/> <!--Show some info about page-->
</LinearLayout>

<RelativeLayout>           
       <ViewPager/><!--Loading images from net, it is very good as a testing case.-->
       <ViewPagerIndicator below="id of ViewPager"/>
       <TextView below="id of ViewPagerIndicator"/> <!--Show some info about page-->
</RelativeLayout>

আপনার পৃষ্ঠাগুলি যদি ইন্টারনেট থেকে কিছু চিত্র লোড করে তবে আপনি দেখতে পাবেন যে সেখানে অনেকগুলি আলাদা। এক্ষেত্রে লিনিয়ারলআউটটি রিলেটিভলআউট এর চেয়ে 100% ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.