Lesson 9 : Splash Activity ( এ্যান্ড্রোয়েড প্রোগ্রামিং বাংলা)



splash Activity  হচ্ছে একটি  ‍এ্যাকটিভিটি যা  এ্যাপ চালু হওয়ার পূর্বে আমরা  একটি স্ক্রীন কয়েক সেকেন্ডের জন্য দেখি, এটিকেই  splash Activity  বলা হয়।

তার মানে,

১। এ্যাপ চালু করলেই একটি এ্যাকটিভিটি দেখা যাবে।
২। এটিকে লাঞ্চার এ্যাকটিভিটি তৈরী করতে হবে।
৩। এই স্ক্রীনটি কয়েক সেকেন্ড স্থায়ী হবে
৪। এরপর অটোমেটিক splash Activity বন্ধ হয়ে যাবে এবং  আপনার মেইন এ্যাক্টিভিটি চালু হয়ে যাবে। splash Activity বন্ধ করে দিতে হবে এমন  ভাবে যাতে মেইন এ্যাাকটিভিটি থেকে মোবাইলের ব্যাক বাটন ক্লিক করলে পুনরায় আবার splash Activity চালু না হয়।

কিছু সময় দেরী করার জন্য আমাদের হ্যান্ডলার এর মাধ্যমে কাজটি করতে হবে। হ্যান্ডলারের মাধ্যমে একটি কাজকে কয়েক সেকেন্ড বা কয়েক মিনিট পর করা যায়,   :

    Handler handler = new Handler();
          handler.postDelayed(new Runnable() {
           public void run() {

               Intent intent = new Intent( SplashActivity.this,  MainActivity.class);

               startActivity(intent);
               finish();
            
              }
          }, 3000);

 এখানে SplashActivity চালু হবার পর   MainActivity.class   এ্যাক্টিভিটি  3000 হাজার মিলিসেকেন্ড অর্থাৎ, তিন সেকেন্ড পর চালূ হবে।




লক্ষ্য করে দেখবেন এ্যাক্টিভিটি ক্লাস জাভা এর মধ্যে -  অনক্রিয়েট এর মধ্যে একটি  setContentView থাকে এবং  এর মধ্যে একটি স্ক্রীন লেআউট থাকে  যেমন :

setContentView(R.layout.read_selection);

অর্থাৎ, এখানে  জাভা ক্লাস ফাইলটি যখন ওপেন হবে তখন স্ক্রীন লেআউট হিসেবে  read_selection  নামে লে আউট এক্স এম এল ফাইলটি লোড হবে।

এখন   splash Screen টি হওয়া উচিত হালকা যাতে এ্যাপ চালু হওয়ার সাথে সাথে  দ্রুত চালু হয়।  লেআউট লোড হতে সময় ব্যয় হতে পারে,  তাই আমরা এমন একটি পদ্ধতিতে splash Screen জাভা কে ওপেন করতে চাই যাতে এর কন্টেন্ট দেখানোর জন্য কোন লে আউট ফাইল লোড করতে না হয়।

এটি করার জন্য আমরা splash Screen জাভা ফাইলের স্টাইল ব্যাকগ্রাউন্ডের মাধ্যমেই আমাদের কন্টেন্ট প্রদর্শন করবো ।

এজন্য আমাদের আরেকটি কাজ করতে হবে :

৫.  স্টাইল ফাইলে  splash Screen এর কন্টেন্ট দিয়ে দিতে হবে। এবং splash Screen জাভা ফাইলে কোন setContentView থাকবেনা।


এখন  মূল কাজ :

১। প্রথমে একটি এম্পটি ক্লাস ফাইল তৈরী করুন।  ফাইল মেনু থেকে  New >Activity > Empty Activity তে যান,   সেখানে  এ্যাক্টিভিটি নেম এর ঘরে লিখুন SplashActivity  এবং Luncher Activity  তে টিকমার্ক দিয়ে দিন।

২। এবার আপনার সমনে SplashActivity   ওপেন হবে। এখানে  setContentView(R.layout.activity_splash)   এই লাইনটি ডিলিট করে দিন।

৩। এবার  res > values > styles   ফাইলটি ওপেন করুন এবং  নীচের কোডটুকু লিখুন :


 <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>



৪।  এখানে  @drawable/background_splash লেখাটি লাল হয়ে থাকবে। অর্থাৎ,  ড্রয়েবল ফোল্ডারে background_splash নামে কোন ফাইল নেই । অর্থাৎ, এটি  এখন আমাদেরকে বানাতে হবে।

৫। এখন drawable ফোল্ডারের উপর রাইট বাটনে ক্লিক করে  New > Drawable Resource File  এ ক্লিক করুন। এবার ফাইল নেম এর ঘরে লিখুন background_splash,  এরপর ওকে করে দিন।

৬। এখন আপনার সামনে    background_splash ফাইলটি দেখতে পাচ্ছেন ।  এই ফাইলের সবকিছু মুছে ফেলে নীচের কোড টুকু লিখুন :



<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/colorPrimary"
        />

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splash_image" />
    </item>

</layer-list>

এখানে লক্ষনীয় যে,  আপনার ড্রয়েবল ফোল্ডারে ic_launcher_background এই  ফাইলটি নাও থাকতে পারে সেক্ষেত্রে ic_launcher_background লেখাটি লাল হয়ে থাকবে।  তাহলে ড্রয়েবল ফোল্ডারে যে কোন একটি পিকচার রেখে দিন । এজন্য,  আপনার পছন্দ মত একটি পিএনজি ইমেজ কম্পিউটার থেকে কপি করুন। এবার  ড্রয়েবল ফোল্ডারের উপর রাইট বাটনে ক্লিক করে  paste  করে দিন,  একটি ডায়লগ বক্স আসবে সেখানে  নাম দিন  splash_image.png, এপরপর ওকে করে দিন।   এবার background_splash  ফাইলটি ওপেন করে        android:src="@drawable/ic_launcher_background"  এই লাইনের স্থলে  লিখুন  android:src="@drawable/splash_image"  , এবার আর লাল রঙের লেখা থাকবেনা।

৭। এবার  SplashActivity    জাভা ফাইলটি ওপেন করুন।  এখানে অনক্রিয়েট এর মধ্যে লিখুন :



Handler handler = new Handler();

        handler.postDelayed(new Runnable() {

            public void run() {

                Intent intent = new Intent( SplashActivity.this,  MainActivity.class);
                startActivity(intent);
                finish();
            }

        }, 3000);

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

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;

তাহলে লাল লেখা দূরীভূত হয়ে যাবে।

৮। এবার AndroidManifes.xml ফাইলটি ওপেন করুন। সেখানে খেয়াল করে দেখুন নীচের লেখাটি আছে :



 <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


এখান থেকে  এই লেখাটুকু সিলেক্ট করে কাট করে দিন :


 <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>


ফলে  এমন দেখাবে :


<activity android:name=".MainActivity">

</activity>

এবার কাট করা লেখাটুকু SplashActivity    এর মধ্যে লিখুন ।  ফলে এমন দেখাবে :


<activity android:name=".SplashActivity"
            >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

এবার আমরা  SplashActivity        এর  থিম ব্যাকগ্রাউন্ড হিসেবে   SplashTheme সিলেক্ট করবো। তাই উপরের লেখার মধ্যে এই লেখাটুকু যোাগ করে দিন :

 android:theme="@style/SplashTheme"

ফলে এমন দেখাবে :



<activity android:name=".SplashActivity"
            android:theme="@style/SplashTheme">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>


এবার এ্যাপটি রান করুন।


এবার আমরা একনজরে সবগুলো ফাইল দেখবো :


১।  SplashActivity.java :


package noor.tutorial.android;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Handler handler = new Handler();

        handler.postDelayed(new Runnable() {

            public void run() {


                Intent intent = new Intent( SplashActivity.this,  MainActivity.class);

               startActivity(intent);

                finish();



            }

        }, 3000);


    }
}



২। values > Style : 



<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>


    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>

</resources>


৩।  AndroidManifest.xml : 




<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="noor.tutorial.android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".SplashActivity"
            android:theme="@style/SplashTheme">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>


        <activity android:name=".MainActivity">
            
        </activity>



    </application>

</manifest>




৪। drawable >  background_splash: 


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/colorPrimary"
        />

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splash_image" />
    </item>



</layer-list>



এক নজরে চিত্র সহকারে : 































No comments:

Post a Comment