কনস্ট্রেন্টলআউট এবং রিলেটিভলআউটের মধ্যে পার্থক্য


219

আমি ConstraintLayoutএবং এর মধ্যে পার্থক্য সম্পর্কে বিভ্রান্ত RelativeLayout। কেউ দয়া করে আমাকে তাদের মধ্যে সঠিক পার্থক্য বলতে পারেন?


9
কনস্ট্রেইন্টলআউট মূলত নতুন প্রোগ্রামারদের জন্য ডিজাইন করা হয়েছে যাতে তারা এক্সএমএল দিয়ে হাত দিয়ে বিন্যাসটি তৈরি না করে ভিজ্যুয়াল এডিটর ব্যবহার করে সহজেই বিন্যাসটি ডিজাইন করতে পারে।
কক্সঅনরোড

1
@ জ্যাক অবশ্যই জড়িত-বিশেষজ্ঞ দেবগণের জন্য এটি গভীর উদ্দেশ্য রয়েছে
মূসা অ্যাপ্রিকো

@ মোজেস অ্যাপ্রিকো আপনি ঠিক বলেছেন যে এটি আছে। কিন্তু আমি মনে করি পাকা বিশেষজ্ঞ devs ইতিমধ্যে অন্য কোন উপায়ে অনেক (তারা ইতিমধ্যে মত জানেন আছে RealtiveLayout, LinearLayout, GridLayoutইত্যাদি) দৃশ্য অনুক্রমের তারা চান জন্য।
CopsOnRoad

5
@ কপসঅনরোড আসলে আপনার ভুল wrong অ্যাপল 5+ বছর ধরে সীমাবদ্ধ বিন্যাসগুলি করছে। আপনি যে কোনও আকারের জন্য প্রতিক্রিয়াশীল নকশা পান এবং একটি টন জটিল লেআউট লিখতে হবে না। আপনি যখন একাধিক দর্শনকে বাঁধাই শুরু করেন তখন সম্পূর্ণ প্রতিক্রিয়াশীল ডিজাইন তৈরি করতে আপনার কেবলমাত্র 3 টি বেসিক নিয়ন্ত্রণ প্রয়োজন।
নিক টার্নার 21

উত্তর:


145

এর উদ্দেশ্য ConstraintLayoutহ'ল বাসা বাঁধা এড়াতে প্রতিটি ভিউতে কিছু নিয়ম প্রয়োগ করে আপনার বিন্যাসের ভিউ হায়ারার্কিকে অনুকূলকরণ এবং সমতল করা।

বিধিগুলি আপনাকে স্মরণ করিয়ে দেয় RelativeLayout, উদাহরণস্বরূপ অন্য কিছু ভিউয়ের বাম দিকে বাম সেট করা।

app:layout_constraintBottom_toBottomOf="@+id/view1"

বিপরীতে RelativeLayout, মানগুলি ConstraintLayoutঅফার biasকরে যা হ্যান্ডলগুলি (বৃত্তের সাথে চিহ্নিত) এর সাথে সম্পর্কিত 0% এবং 100% অনুভূমিক এবং উল্লম্ব অফসেটের শর্তে একটি ভিউ অবস্থানের জন্য ব্যবহৃত হয়। এই শতাংশ (এবং ভগ্নাংশ) বিভিন্ন পর্দার ঘনত্ব এবং আকারগুলি জুড়ে ভিউয়ের বিজোড় অবস্থান নির্ধারণ করে।

app:layout_constraintHorizontal_bias="0.33" <!-- from 0.0 to 1.0 -->
app:layout_constraintVertical_bias="0.53" <!-- from 0.0 to 1.0 -->

বেসলাইন হ্যান্ডেল (বৃত্তাকার হ্যান্ডেলের নীচে বৃত্তাকার কোণগুলির সাথে দীর্ঘ পাইপ) অন্য ভিউ রেফারেন্সের সাথে ভিউয়ের সামগ্রীটি সারিবদ্ধ করতে ব্যবহৃত হয়।

স্কয়ার হ্যান্ডলগুলি (দর্শনার প্রতিটি কোণে) ভিপিটির আকার পরিবর্তন করতে ব্যবহৃত হয়।

এখানে চিত্র বর্ণনা লিখুন

এটি সম্পূর্ণ মতামত ভিত্তিক এবং আমার ধারণাটি ConstraintLayout


9
আমরা এখনও আপেক্ষিক লেআউট ব্যবহার করে সমতল লেআউটটি তৈরি করতে পারি তাই কেন আমি কনস্ট্র্যান্টলয়েট যেখানে রিলেটিভলআউটটি পারি না সেদিকে খেয়াল রাখে সেখানে আমি বিভ্রান্ত হই?

6
রিলেটিভলআউট একটি দ্বি-কর বিন্যাস, দ্বিগুণ করের সমস্যায় ভুগছে। এটি অবশ্যই কমপক্ষে দু'বার পরিমাপ / বিন্যাস করতে হবে। কনস্ট্রেন্টলয়েট এই পারফরম্যান্স পেনাল্টি ভোগ করে না।
ক্রিস্টোফার পেরি

5
@ কিছুই না, আমরা এখনও আপেক্ষিক লেআউট ব্যবহার করে সমতল লেআউট তৈরি করতে পারি। তবে এখানে উল্লিখিত প্রত্যেকে ছাড়াও, কনস্ট্রেন্টলআউট আপনাকে পূর্বনির্ধারিত অনুপাতে নেতিবাচক মার্জিন এবং আকারের সাবভিউগুলি ব্যবহার করতে দেয় । ম্যাটেরিয়াল ডিজাইন
ইউজিন ব্রুসভ

4
কিছু লেআউট রয়েছে যা রিলেটিভলআউটে অসম্ভব, যদি না আপনি লিনিয়ারলআউট বা অন্য কোনও রিলেটিভলআউটকে বাসা বাঁধেন। উদাহরণস্বরূপ: 3
টির ভিউয়ের

@ গাক 2 আপনার নীচে নেস্টেড লেআউট ছাড়া আমি অসম্ভব কিছু দেখতে পাচ্ছি না। আমার চেয়ে "স্ট্যাক" দিয়ে আপনি অন্য কিছু বোঝাতে পারেন। আমি কেবল "লেআউট_অ্যালাইনইন্ড", "লেআউট_বেলো", "লেআউট _..." ব্যবহার করি এবং এটির সাথে কোনও ধরণের স্ট্যাক তৈরি করতে পারি ...
অবিশ্বাস্য জানুয়ারী

81

আপেক্ষিক লেআউট এবং সীমাবদ্ধ বিন্যাস সমতুল্য বৈশিষ্ট্য

আপেক্ষিক লেআউট এবং সীমাবদ্ধ বিন্যাস সমতুল্য বৈশিষ্ট্য

(1) আপেক্ষিক লেআউট:

android:layout_centerInParent="true"    

(1) সীমাবদ্ধ বিন্যাস সমতুল্য:

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"

(2) আপেক্ষিক লেআউট:

android:layout_centerHorizontal="true"

(2) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"

(3) আপেক্ষিক লেআউট:

android:layout_centerVertical="true"    

(3) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"

(4) আপেক্ষিক লেআউট:

android:layout_alignParentLeft="true"   

(4) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintLeft_toLeftOf="parent"

(5) আপেক্ষিক লেআউট:

android:layout_alignParentStart="true"

(5) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintStart_toStartOf="parent"

()) আপেক্ষিক লেআউট:

android:layout_alignParentRight="true"

()) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintRight_toRightOf="parent"

(7) আপেক্ষিক লেআউট:

android:layout_alignParentEnd="true"    

(7) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintEnd_toEndOf="parent"

(8) আপেক্ষিক লেআউট:

android:layout_alignParentTop="true"

(8) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintTop_toTopOf="parent"

(9) আপেক্ষিক লেআউট:

android:layout_alignParentBottom="true" 

(9) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintBottom_toBottomOf="parent"

(10) আপেক্ষিক লেআউট:

android:layout_alignStart="@id/view"

(10) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintStart_toStartOf="@id/view"

(11) আপেক্ষিক লেআউট:

android:layout_alignLeft="@id/view" 

(১১) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintLeft_toLeftOf="@id/view"

(12) আপেক্ষিক লেআউট:

android:layout_alignEnd="@id/view"  

(12) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintEnd_toEndOf="@id/view"

(13) আপেক্ষিক লেআউট:

android:layout_alignRight="@id/view"

(13) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintRight_toRightOf="@id/view"

(14) আপেক্ষিক লেআউট:

android:layout_alignTop="@id/view"  

(14) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintTop_toTopOf="@id/view"

(15) আপেক্ষিক লেআউট:

android:layout_alignBaseline="@id/view" 

(15) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintBaseline_toBaselineOf="@id/view"

(16) আপেক্ষিক লেআউট:

android:layout_alignBottom="@id/view"

(16) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintBottom_toBottomOf="@id/view"

(17) আপেক্ষিক লেআউট:

android:layout_toStartOf="@id/view"

(17) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintEnd_toStartOf="@id/view"

(18) আপেক্ষিক লেআউট:

android:layout_toLeftOf="@id/view"  

(18) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintRight_toLeftOf="@id/view"

(19) আপেক্ষিক লেআউট:

android:layout_toEndOf="@id/view"

(19) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintStart_toEndOf="@id/view"

(20) আপেক্ষিক লেআউট:

android:layout_toRightOf="@id/view"

(20) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintLeft_toRightOf="@id/view"

(21) আপেক্ষিক লেআউট:

android:layout_above="@id/view" 

(21) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintBottom_toTopOf="@id/view"

(22) আপেক্ষিক লেআউট:

android:layout_below="@id/view" 

(22) সীমাবদ্ধ লেআউট সমতুল্য:

app:layout_constraintTop_toBottomOf="@id/view"


2
আপনি কি চিত্রের পরিবর্তে পাঠ্য হিসাবে পোস্ট করতে পারেন? যাতে এটি আমার এবং ভবিষ্যতে অন্যদের জন্য খুব উপকারী হবে।
নতুন বিকাশকারী

2
প্রতিবন্ধক লেআউটগুলি শিখতে শুরু করা প্রত্যেককে এটি দেখতে হবে। ধন্যবাদ।
গ্রান্টেসপো 20'19

1
এটি দরকারী তথ্য, তবে কেবল একটি ডকুমেন্টেশন ডাম্প এবং তাদের মধ্যে পার্থক্য ব্যাখ্যা করার জন্য কিছুই করে না।
তবুও অন্যরেন্ডোম ব্যবহারকারীর

1
না, ডক্সে দেখার মতো সময় আমার নেই, এটি অবশ্যই কার্যকর। এবং সরল ভাষায় লেখা। Upvoting।
কোডটোলাইফ

46

@ ডেভিডপব্রের ConstraintLayout পারফরম্যান্স দ্বারা রিপোর্ট করা

আমি দুটি অনুরূপ 7-শিশু লেআউট তৈরি করেছি, প্রত্যেকটি একটি পিতামাতার সাথে ConstraintLayoutএবং RelativeLayout। অ্যান্ড্রয়েড স্টুডিও পদ্ধতি ট্রেসিং সরঞ্জামের উপর ভিত্তি করে, এটি প্রদর্শিত হয় যে এটি ConstraintLayoutonMeasure এ আরও বেশি সময় ব্যয় করে এবং এতে অতিরিক্ত কাজ করে onFinishInflate

ব্যবহৃত গ্রন্থাগার ( support-v4, appcompat-v7…):

com.android.support.constraint:constraint-layout:1.0.0-alpha1

ডিভাইস / অ্যান্ড্রয়েড সংস্করণগুলি এতে পুনরুত্পাদন করা হয়েছে: স্যামসাং গ্যালাক্সি এস 6 (এসএম-জি 920 এ। দুঃখিত, কোনও নেক্সাস এটিএম নেই)। অ্যান্ড্রয়েড 5.0.2

দ্রুত পদ্ধতির ট্রেসিং তুলনা:

1

নমুনা গিথুব রেপো: https://github.com/OnlyInAmerica/CrastraintLayoutcreen


একই সমস্যা থেকে: আমি আপাতত এটি বন্ধ করতে যাচ্ছি - আলফা 4/5 পারফরম্যান্সের বেশ কিছুটা উন্নতি এনেছে। আমরা সম্ভবত এটি আরও উন্নত করতে সক্ষম হব, তবে এটি 1.0 পোস্টের জন্য অপেক্ষা করতে পারে।
ওলেকসান্ডার

এই দুর্দান্ত তুলনাটি তৈরি করতে আপনি কোন সরঞ্জামটি ব্যবহার করেছেন দয়া করে তা ব্যাখ্যা করতে পারেন?
নাটিভ

2
@ নাটিভ মনোটিরস -> সিপিইউ-> সময় ট্র্যাকার আইকন
আন্দ্রে টি

18
সীমাবদ্ধ-লেআউট সহ একই কোডটি চালান এবং প্রোফাইল দিন: অ্যান্ড্রয়েড 6.0.1 সহ নেক্সাস 5 এ 1.0.1, এখানে ফলাফল: আপেক্ষিক লেআউট - লেওয়েট 7 মিমি = 9 এমএসে মোট 2 এমএসে 54 এমএস নিয়মিত লেআউট - init 2 মিমি 30 মিমি + 16 মিমি = 62 মিমি অবধি 7ms কনস্ট্রেন্ট লেআউট লেআউট প্যারাম তৈরি করে + ভিউ যুক্ত করুন ms 7 * 2ms = 14ms পরিমাপ করুন 60ms + 52ms ~ 112ms লেআউট 8 এমএসে মোট ~ 141ms প্রথম সূচনা প্রতিবন্ধকের চেয়ে প্রায় তিনগুণ দ্রুত Re
আন্দ্রে টি

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

27

নিম্নলিখিত পার্থক্য / সুবিধা:

  1. কনস্ট্রেন্ট লেআউটে উভয় ক্ষেত্রে সম্পর্কিত লেআউটের পাশাপাশি দ্বৈত শক্তি রয়েছে লিনিয়ার লেআউট: মতামতের আপেক্ষিক অবস্থান নির্ধারণ করুন (তুলনামূলক বিন্যাসের মতো) এবং গতিশীল ইউআইয়ের জন্য ওজনও সেট করে (যা কেবল লিনিয়ার লেআউটে সম্ভব ছিল)।

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

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

  4. আর একটি খুব গুরুত্বপূর্ণ বৈশিষ্ট্যটি হ'ল এটি GONE ভিউগুলি পরিচালনা করার জন্য কার্যকারিতাটি সম্মান করে এবং সরবরাহ করে যাতে জাভা কোডের মাধ্যমে কিছু ভিউ GONE এ সেট করা থাকলে লেআউটগুলি ভেঙে না যায়। আরও এখানে পাওয়া যাবে: https://developer.android.com/references/android/support/constraint/ConstraintLayout.html# ভিজিবিলিটি আচরণ

  5. ব্লু প্রিন্ট এবং ভিজ্যুয়াল এডিটর সরঞ্জাম ব্যবহার করে স্বয়ংক্রিয় সীমাবদ্ধতার শক্তি সরবরাহ করে যা কোনও পৃষ্ঠা ডিজাইন করা সহজ করে।

এই সমস্ত বৈশিষ্ট্যগুলি ভিউ হায়ারার্কিকে সমতল করার দিকে পরিচালিত করে যা কর্মক্ষমতা উন্নত করে এবং প্রতিক্রিয়াশীল এবং গতিশীল UI তৈরি করতে সহায়তা করে যা আরও সহজেই বিভিন্ন স্ক্রিনের আকার এবং ঘনত্বের সাথে মানিয়ে নিতে পারে।

দ্রুত শিখার জন্য এখানে সেরা স্থান: https://codelabs.developers.google.com/codelabs/constraint-layout/#0


6) ConstraintLayout প্রাক সংজ্ঞায়িত অনুপাত মাপ subviews করা সম্ভব করে medium.com/google-developers/... । উদাহরণস্বরূপ এটি দরকারী হবে যখন আপনি 16: 9-এ আপনার ইমেজভিউটি রাখতে যাচ্ছেন।
ইউজিন ব্রুসভ

15

একটি বড় পার্থক্য হ'ল কনস্ট্রেন্টলআউট ভিউ চলে গেলেও প্রতিবন্ধকতাগুলিকে সম্মান করে। সুতরাং আপনার যদি চেইন থাকে তবে এটি বিন্যাসটি ভাঙবে না এবং আপনি একটি দৃশ্যটি মাঝখানে অদৃশ্য করতে চান।


আপনি আমাকে কোন উদাহরণ দিতে পারেন? ধরা যাক 3 টি বোতাম আছে। আমি ২ য় বোতামটি আড়াল করব এবং তৃতীয় বোতামটি বিডিএন 2 হিসাবে আইডি সহ ২ য় বোতামের সাথে সংযুক্ত। ধরুন আমি ২ য় বোতামটি আড়াল করি তাহলে তৃতীয় বোতামটি কীভাবে দ্বিতীয় বোতামের আইডি খুঁজে পাবে?

1
এটা সত্যি না. আপনি যদি "বোতাম" এর পরিবর্তে একটি বোতামের দৃশ্যমানতা "ইনভিজিবল" হিসাবে সেট করেন আপনি সীমাবদ্ধতাগুলি ভাঙবেন না। আমার হিসাবে, @ নিকোলা বলেছিলেন সবচেয়ে বড় ভিন্নটি হল পক্ষপাত যা আপনাকে আরও "প্রতিক্রিয়াশীল" মতামত তৈরি করতে সহায়তা করে।
জাপোটেক

@ কিছুই না চলুন ধরুন যে বোতামগুলি একে অপরের অধীনে রয়েছে। এমনকি আপনি টি বাটন 2 লুকিয়ে রাখলেও এটি এখনও আপনার এক্সএমএল বা কোডে "দেখার চুক্তিতে" রয়েছে। কনস্ট্রেন্টলয়েট এটি সম্মান করবে এবং বাটন 3 টি বোতাম 1 এর অধীনে থাকবে a
Herrbert74

@ জাপোটেক আমি সম্মান করি যে অন্যান্য জিনিসগুলি আপনার কাছে বেশি গুরুত্বপূর্ণ তবে আমার জন্য এটি একটি দুর্দান্ত পার্থক্য। RelativeLayout এ আমি কেবলমাত্র ঘৃণা করি Fix অদৃশ্য ব্যবহার করা কোনও বিকল্প নয়, কারণ এটি স্থানটি দাবি করবে।
Herrbert74

7

@ ধাওয়াল-জিভানি ছাড়াও উত্তর।

আমি প্রকল্প আপডেট করেছি গিথুব প্রকল্পটি সীমাবদ্ধ বিন্যাসের v.1.1.0-beta3 এর সর্বশেষ সংস্করণে

অনক্রিট পদ্ধতি এবং সিএনইউ মনিটরে দৃশ্যমান শেষ প্রফ্রডড্রো পদ্ধতির কার্যকরকরণের শেষের মধ্যে আমি ওনক্রিয়াট পদ্ধতি এবং সময়কে পরিমাপ করেছি এবং তুলনা করেছি। সমস্ত পরীক্ষা অ্যান্ড্রয়েড 6.0.1 সহ স্যামসাং এস 5 মিনিতে করা হয়েছিল এখানে ফলাফল:

নতুন করে শুরু (অ্যাপ্লিকেশন প্রবর্তনের পরে প্রথম পর্দা খোলার)

আপেক্ষিক লেআউট

অনক্রিট: 123 মিমি

শেষ প্রিফ্রড ড্রয়ের সময় - অনক্রিট সময়: 311.3 মিমি

বাধা লেআউট

অনক্রিট: 120.3 মিমি

শেষ প্রিফ্রড ড্রয়ের সময় - অনক্রিট সময়: 310 মিমি

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

একটি উপসংহার হিসাবে আমি নিবন্ধের মন্তব্যগুলির সাথে একমত :

পুরানো দর্শনগুলি রিলেটিক্যালয়েআউট বা লিনিয়ারলআউট থেকে স্যুইচ করা কি মূল্যবান?

সর্বদা হিসাবে: এটি নির্ভর করে 🙂

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


6

সরকারিভাবে, ConstraintLayoutহয় অনেক দ্রুত

অ্যান্ড্রয়েডের এন রিলিজে, ConstraintLayoutক্লাসটি অনুরূপ কার্যকারিতা সরবরাহ করে RelativeLayoutতবে একটি উল্লেখযোগ্যভাবে কম ব্যয়ে।


6

আসল প্রশ্নটি জিজ্ঞাসা করা হল, সীমাবদ্ধ বিন্যাস ছাড়া অন্য কোনও লেআউট ব্যবহার করার কোনও কারণ আছে কি? আমি বিশ্বাস করি উত্তরটি হতে পারে না।

যাঁরা জিদ করছেন তারা নবাগত প্রোগ্রামার বা তাদের মতো লক্ষ্য রাখেন, তাদের অন্য কোনও বিন্যাসের থেকে নিকৃষ্ট হওয়ার জন্য তাদের কোনও কারণ সরবরাহ করা উচিত।

সীমাবদ্ধতা লেআউটগুলি প্রতিটি উপায়েই আরও ভাল (তারা এপিএকের আকারের 150k এর মতো ব্যয় করে। এগুলি দ্রুত, এগুলি সহজ, তারা আরও নমনীয়, পরিবর্তনের ক্ষেত্রে তারা আরও ভাল প্রতিক্রিয়া দেখায়, আইটেমগুলি চলে যাওয়ার পরে সমস্যাগুলি সমাধান করে, তারা মূলত বিভিন্ন স্ক্রিনের ধরণের সাথে ভালভাবে মিলিত হয় এবং তারা দীর্ঘস্থায়ী নেস্ট লুপ ব্যবহার করে না long সবকিছু জন্য গাছ কাঠামো আঁকা। আপনি যে কোনও স্থানে, যে কোনও জায়গায় শ্রদ্ধার সাথে যে কোনও জায়গায় রাখতে পারেন।

তারা ২০১ 2016 সালের মাঝামাঝি সময়ে কিছুটা চতুর ছিল, যেখানে ভিজ্যুয়াল লেআউট সম্পাদকটি যথেষ্ট ভাল ছিল না, তবে তারা এই বিষয়টিতে পৌঁছেছে যে আপনার যদি কোনও বিন্যাস হয় তবে আপনি এমনকি বাধা লেআউট ব্যবহার করেও গুরুত্ব সহকারে বিবেচনা করতে চাইতে পারেন যখন এটি একটি হিসাবে একই জিনিস আছে RelativeLayout, অথবা এমনকি একটি সহজ LinearLayoutFrameLayoutsস্পষ্টভাবে এখনও তাদের উদ্দেশ্য আছে। তবে, আমি এই মুহুর্তে অন্য কিছু নির্মাণ করতে দেখছি না। তারা যদি এটি দিয়ে শুরু করে তবে তারা আর কিছু যুক্ত না করত।


1
দ্রুত কোন প্রমাণ আছে?
রাজেশ নাসিত

1
হ্যাঁ. এটি দ্রুত। বিন্যাসটি গাছের মাধ্যমে পুনরাবৃত্ত হওয়ার চেয়ে একক সমাধানকারীতে ডাউন। বেশিরভাগ জিনিসের ক্ষেত্রে এটি গুরুত্বপূর্ণ নয় কারণ এটি লেআউটে কল করার সময় হয়েছে। তবে, সহজ অবস্থায় ভিউ ট্রি জিনিসটি ভিউগুলির অভ্যন্তরে একত্রে ভিউ তৈরি করে যার জন্য কলগুলির জন্য প্রয়োজনীয় কলগুলি প্রয়োজন। যদিও এটি তাত্ত্বিকভাবে সুন্দর, বাস্তবে একটি বিট কোডের মধ্যে বিন্যাস সম্পাদন করা পুরো ভিউ ট্রিতে পুনরাবৃত্তি করার চেয়ে অনেক সহজ। এটা আরো ছবিসহ আরো চিত্তাকর্ষক হবে কিন্তু এখানে মে থেকে একটি বেঞ্চমার্ক আছে: medium.com/@krpiotrek/constraintlayout-performance-c1455c7984d7
Tatarize

আমি অন্য প্রশ্নের মুখোমুখি হচ্ছি, আমি যে অ্যাপটিতে কাজ করছি সেটিতে কি সমস্ত বিদ্যমান আপেক্ষিকতাগুলি প্রতিস্থাপন করা উচিত? এটি কি পারফরম্যান্সে উল্লেখযোগ্যভাবে উন্নতি করবে?
শ্রীকান্ত করুণাঘাট

@ শ্রীকান্তকর্মণাঘাট দেখে মনে হচ্ছে আপনি যে সময় পরিবর্তন করেছেন তা বদলাতে যে সময় লাগে তা আপনি কখনই ফিরিয়ে আনতে পারবেন না। আমরা বেশিরভাগ ক্ষেত্রে 3.5 মাইল চক্রের 3.25 মিমি নেমে যাওয়ার কথা বলছি। যদি এটি আপনাকে অতিরিক্ত বৈশিষ্ট্য দেয় বা আপনার প্রয়োজনীয় কিছু দেয় তবে তা নিশ্চিত, তবে সম্পূর্ণ গতির ভিত্তিতে নয়। যদিও আমরা একটি রূপান্তর বোতামে আঘাত করার কথা বলছি।
তাতারাইজ 26'19

5

আমি উপসংহারটি করতে পারি is

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

২) দ্বিতীয়ত এটিতে অন্যান্য লেআউটের তুলনায় সমতল দৃশ্যের স্তরক্রম রয়েছে , তাই আপেক্ষিক বিন্যাসের চেয়ে ভাল পারফরম্যান্স যা আপনি অন্যান্য উত্তর থেকে দেখে থাকতে পারেন

3) এটিতে আপেক্ষিক বিন্যাসের তুলনায় অতিরিক্ত জিনিস রয়েছে যেমন বিজ্ঞপ্তিযুক্ত আপেক্ষিক অবস্থান যেখানে আমরা নির্দিষ্ট ব্যাসার্ধের সাথে এটির সাথে সম্পর্কিত একটি অন্য দৃষ্টিভঙ্গি নির্দিষ্ট কোণে করতে পারি যা আপেক্ষিক বিন্যাসে করতে পারে না

আমি এটি আবার বলছি, সীমাবদ্ধ লেআউটটি ব্যবহার করে ইউআই ডিজাইন করা আইওএসে ইউআই ডিজাইনের সমান, তাই ভবিষ্যতে আপনি যদি আইওএসে কাজ করেন তবে আপনি যদি সীমাবদ্ধ বিন্যাসটি ব্যবহার করেন তবে এটি আরও সহজ হবে future


1

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

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