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"
ফলে এমন দেখাবে :
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