একটি এক্সএমএল ফাইল থেকে ভিউ ফুলে উঠার অর্থ কী?


278

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

উত্তর:


257

আপনি যখন এক্সএমএল লেআউটটি লিখবেন, তখন এটি অ্যান্ড্রয়েড ওএস দ্বারা ফুলে উঠবে যার মূলত অর্থ এটি মেমরিতে ভিউ অবজেক্ট তৈরি করে রেন্ডার করা হবে। আসুন আমরা অন্তর্ভুক্ত মুদ্রাস্ফীতি বলি (ওএস আপনার জন্য দৃষ্টিভঙ্গি বাড়িয়ে তুলবে)। এই ক্ষেত্রে:

class Name extends Activity{
    public void onCreate(){
         // the OS will inflate the your_layout.xml
         // file and use it for this activity
         setContentView(R.layout.your_layout);
    }
}

আপনি ব্যবহার করে স্পষ্টভাবে ভিউগুলি স্ফীত করতে পারেন LayoutInflater। সেক্ষেত্রে আপনাকে:

  1. একটি উদাহরণ পান LayoutInflater
  2. স্ফীত করতে এক্সএমএল উল্লেখ করুন
  3. ফিরে আসা ব্যবহার করুন View
  4. প্রত্যাবর্তিত দর্শন (উপরে) দিয়ে সামগ্রী দৃশ্য সেট করুন

এই ক্ষেত্রে:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4

24
যদি স্ফীত = রেন্ডারিং হয়, তবে অনড্র () ব্যবহার কী, অবিকল?
পাইপব্রস

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

@ ক্রিশ্চিয়ান দয়া করে, আপনি কি আমাকে এখানে goo.gl/E37NSu
এডি

24
আমি মনে করি না যে স্ফীত করা এক্সপ্লোরেশন বরং রেন্ডারিং হচ্ছে এক্সএমএল ফাইল সামগ্রীর উপর ভিত্তি করে মেমরিতে ভিউ অবজেক্টের প্রকৃত সৃষ্টি। স্ফীত করার পরে ভিউ মেমরিতে থাকবে অগত্যা দৃশ্যমান।
আহমেদ

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

160

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


22
এটি আমার কাছে আরও নির্ভুল বর্ণনার মতো শোনাচ্ছে।
পাইপব্রোস

4
আমি নিজেও "মুদ্রাস্ফীতি" পরিভাষায় কিছুটা বিভ্রান্ত হয়ে পড়েছি। (আমি যদি কেবল বাতাসের কোনও কিছুতে যাওয়া বন্ধ করে দিতে পারি)) তবে সম্ভবত এটি সাহায্য করবে: আমি কেবল একটি উবুন্টু টার্মিনালে আনজিপ প্রোগ্রামটি চালিয়েছি এবং পরিভাষাটি লক্ষ্য করেছি: "স্ফীত হওয়া: এক্স / ওয়াই / জেড.এক্সএমএল।" আমি মনে করি এটি সত্যই একই ধারণা।
বেন ওগোরেক

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

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

36

স্ফীতকরণটি রানটাইমের ক্রিয়াকলাপে একটি দর্শন (.xML) যুক্ত করার প্রক্রিয়া। যখন আমরা একটি তালিকাভিউ তৈরি করি আমরা এর প্রতিটি আইটেমকে গতিশীলভাবে স্ফীত করি। যদি আমরা বোতাম এবং পাঠ্যদর্শন মত একাধিক মতামত সহ একটি ভিউগ্রুপ তৈরি করতে চাই, আমরা এটির মতো এটি তৈরি করতে পারি:

Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...

TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...

তারপরে আমাদের একটি লেআউট তৈরি করতে হবে যেখানে আমরা উপরের মতামতগুলি যুক্ত করতে পারি:

RelativeLayout rel = new RelativeLayout();

rel.addView(but);

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

অ্যান্ড্রয়েড আমাদের জন্য একটি সহজ .xML তৈরি করতে এবং এর শৈলী এবং বৈশিষ্ট্যগুলিকে এক্সএমএলে নকশা করা সহজ করে তোলে এবং তারপরে অগ্রগতিগতভাবে সীমাবদ্ধতার ব্যথা ছাড়াই আমাদের যেখানেই প্রয়োজন সেখানে এটি কেবল স্ফীত করে তোলে।

LayoutInflater inflater = 
              (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like

(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);

আমি পছন্দ করি আপনি কীভাবে মুদ্রাস্ফীতিটি কীভাবে বর্ণনা করেছেন, আপনি কীভাবে এটি ম্যানুয়ালি করবেন তা দেখিয়ে।
ড্যানিয়েল

1
স্ফীতকরণের প্যারামিটার সংযুক্তিটিওরট বলতে কী বোঝায়?
flz

বিস্তারিত উত্তর দেখুন স্ট্যাকওভারফ্লো.com
জার ই আহমের

5

আমার মনে হয় এখানে "একটি ভিউতে স্ফীত করা" এর অর্থ লেআউট.এইচএমএল ফাইলটি এই এক্সএমএল ফাইলটিতে নির্দিষ্ট করা একটি চিত্র অঙ্কন করা এবং তৈরি ভিউ সহ পিতামাতার ভিউগ্রুপকে জনপ্রিয় (= স্ফীত করা) ching


4

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


2

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

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