Frame Layout

এই পর্বে আমরা দেখবো Frame Layout নিয়ে কিভাবে কাজ করা হয় । ফ্রেম লেয়াউট এ আমরা একাধিক ভিউ / ভিউগ্রুপ নিবো কিন্তু এক স্ক্রিনে মাত্র একটি ভিউ / ভিউগ্রুপ কে দেখানো যাবে । ধরা যাক আমাদের লেআউট এ ৩টি ভিউ (ছবির ভিউ) আছে । তাহলে স্ক্রিনে আমরা মাত্র ১টি ছবিই দেখাতে পারবো । সেই ভিউ এর উপর ক্লিক করলে বাকি ভিউটি আসবে । এভাবে সিরিয়াল ম্যাইন্টেইন করে একটার পর আরেকটা ভিউ আসতে থাকবে । যেমন -




এখানে প্রথমে পুরো স্ক্রিন জুড়ে আমার ছবি দেখা যাচ্ছে । Frame Layout এ একটি ভিউ এর উপর অন্য আরেকটি ভিউ বসে । তাই ঝামেলা এড়াতে বাকি ভিউদুইটি ইনভিসিবল করে দিলাম । এখন আমার ছবির উপর ক্লিক করলে ফুটবল-কাপের ছবিটি আসবে , আবার ফুটবল-কাপের ছবিটির উপর ক্লিক করলে মেসির ছবি আসবে । এভাবে সিরিয়াল অনুযায়ী লুপ আকারে চলতে থাকবে । অবশ্য এজন্য জাভাতেও কিছু কোড লিখতে হবে ।

activity_main.xml - Root Layout হিসেবে Frame Layout নিলাম । এরভিতরে আমরা যে ৩টি ছবি দেখাবো সেজন্য ৩টি ImageView নিলাম । প্রতি ImageView তে onClick ম্যাথড ডিক্লার করলাম এবং ম্যাথডের সেইম নাম দিলাম কারন যে ছবিতেই ক্লিক করা হোক নাহ কেন সেই ম্যাথডের ভিতরে গিয়ে কাজ করবে । প্রথম ImageView টি VISIBLE রেখে বাকি দুইটি INVISIBLE করে দিলাম ।

 <?xml version="1.0" encoding="utf-8"?>  
 <FrameLayout  
   xmlns:android="http://schemas.android.com/apk/res/android"  
   xmlns:app="http://schemas.android.com/apk/res-auto"  
   xmlns:tools="http://schemas.android.com/tools"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"  
   tools:context=".MainActivity">  
   <ImageView  
     android:id="@+id/mashiur"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:src="@drawable/mashuir"  
     android:onClick="FrameChange" />  
   <ImageView  
     android:id="@+id/footballCup"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:src="@drawable/footballcup"  
     android:onClick="FrameChange"  
     android:visibility="gone"/>  
   <ImageView  
     android:id="@+id/messi"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:src="@drawable/messi"  
     android:onClick="FrameChange"  
     android:visibility="gone"/>  
 </FrameLayout>  

এবার জাভা কোডে আসা যাক ।

MainActivity.java  -

 public class MainActivity extends AppCompatActivity {  
   ImageView mashiur, footballCup, messi ;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     Fabric.with(this, new Crashlytics());  
     setContentView(R.layout.activity_main);  
     mashiur = findViewById(R.id.mashiur);  
     footballCup = findViewById(R.id.footballCup);  
     messi = findViewById(R.id.messi);  
   }  
   public void FrameChange(View view) {  
     if (view.getId()==R.id.mashiur){  
       mashiur.setVisibility(View.GONE);  
       footballCup.setVisibility(View.VISIBLE);  
     }else if(view.getId()==R.id.footballCup){  
       footballCup.setVisibility(View.GONE);  
       messi.setVisibility(View.VISIBLE);  
     }else {  
       messi.setVisibility(View.GONE);  
       mashiur.setVisibility(View.VISIBLE);  
     }  
   }  
 }  

এখানে খুব সিম্পল কোড করা হইছে । আশা করি সবাই বুঝতে পারছেন । যেহেতু আমার ছবিটি VISIBLE অবস্থায় আছে তাই আমার ছবির আইডি টা view তে চলে আসবে । if-else দিয়ে কন্ডিশনে ফেলে দিলাম যে যদি স্ক্রিনে ক্লিক পরে এবং আমার ছবি টা VISIBLE অবস্থায় থাকে তাহলে সেটি GONE মানে INVISIBLE অবস্থায় চলে আসবে । এখানে আপনি চাইলে GONE / INVISIBLE যে কোনটা ইউজ করতে পারেন । এবং আমার ছবিটা INVISIBLE অবস্থায় গিয়ে ফুটবল-কাপের ছবিটা VISIBLE করে দিবে । আবার ফুটবল-কাপের ছবিতে ক্লিক করলে মেসির ছবি VISIBLE করবে । এবং শেষমেষ এই দুইটি ছবি বাদে মেসির ছবিটাই থাকবে তাই আর কন্ডিশন দেয়ার দরকার পড়লো নাহ এবং সেটাতে ক্লিক করলে আবার আমার ছবিটি VISIBLE করে দিবে । এভাবে অটোমেটিক লুপ আকারে চলতে থাকবে ।

এবার এপ টা রান করুন ।  ধন্যবাদ সবাইকে , দেখা হবে আগামী পর্বে 😊😊😊

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

Toggle Button - 10 ( Android Bangla Tutorial)

Spinner View - 11 ( Android Bangla Tutorial)

ImageView ( Android Bangla Tutorial - )