আমি আমার অ্যাপ্লিকেশনটিকে আরও পেশাদার দেখাতে চেয়েছিলাম, তাই আমি স্থির করেছিলাম যে আমি একটি স্প্ল্যাশ স্ক্রিন তৈরি করতে চাই।
আমি কীভাবে এটি তৈরি করব এবং তারপরে এটি বাস্তবায়ন করব?
আমি আমার অ্যাপ্লিকেশনটিকে আরও পেশাদার দেখাতে চেয়েছিলাম, তাই আমি স্থির করেছিলাম যে আমি একটি স্প্ল্যাশ স্ক্রিন তৈরি করতে চাই।
আমি কীভাবে এটি তৈরি করব এবং তারপরে এটি বাস্তবায়ন করব?
উত্তর:
আরও পড়া:
পুরানো উত্তর:
কীভাবে : সাধারণ স্প্ল্যাশ স্ক্রিন
এই উত্তরগুলি আপনাকে দেখায় যে যখন ব্র্যান্ডিংয়ের কারণে আপনার অ্যাপ্লিকেশন শুরু হয় তখন একটি নির্দিষ্ট সময়ের জন্য কীভাবে একটি স্প্ল্যাশ স্ক্রিন প্রদর্শন করতে হয়। যেমন আপনি স্প্ল্যাশ স্ক্রিনটি 3 সেকেন্ডের জন্য চয়ন করতে পারেন। তবে আপনি যদি পরিবর্তিত পরিমাণে (যেমন অ্যাপ্লিকেশন শুরু করার সময়) জন্য স্প্যাশ স্ক্রিনটি দেখাতে চান তবে আপনার আবদুল্লাহর উত্তর https://stackoverflow.com/a/15832037/401025 পরীক্ষা করা উচিত । তবে সচেতন থাকুন যে অ্যাপ্লিকেশন স্টার্টআপটি নতুন ডিভাইসে খুব দ্রুত হতে পারে তাই ব্যবহারকারী কেবল একটি ফ্ল্যাশ দেখতে পাবেন যা খারাপ ইউএক্স।
প্রথমে আপনাকে আপনার layout.xml
ফাইলে স্প্যাশ স্ক্রিনটি নির্ধারণ করতে হবে
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/splash"
android:layout_gravity="center"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, splash"/>
</LinearLayout>
এবং আপনার ক্রিয়াকলাপ:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 1000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
/* New Handler to start the Menu-Activity
* and close this Splash-Screen after some seconds.*/
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
Intent mainIntent = new Intent(Splash.this,Menu.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
}
এখানেই শেষ ;)
SPLASH_DISPLAY_LENGTH
। পরিবর্তে আপনার এটি করা উচিত: bignerdranch.com/blog/splash-screens-theright-way
নোট করুন এই সমাধানটি ব্যবহারকারীকে আরও অপেক্ষা করতে দেবে না: স্প্ল্যাশ স্ক্রিনের বিলম্ব অ্যাপ্লিকেশনটির শুরু হওয়ার সময়ের উপর নির্ভর করে।
আপনি যখন কোনও অ্যান্ড্রয়েড অ্যাপ্লিকেশন খুলবেন তখন আপনি অ্যাপটির শিরোনাম এবং আইকনটির উপরের ডিফল্টরূপে কিছু কালো পর্দা পাবেন, আপনি কোনও স্টাইল / থিম ব্যবহার করে এটিকে পরিবর্তন করতে পারবেন।
প্রথমে মান ফোল্ডারে একটি স্টাইল.এক্সএমএল তৈরি করুন এবং এতে একটি শৈলী যুক্ত করুন।
<style name="splashScreenTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
</style>
ব্যবহারের পরিবর্তে @android:style/Theme.DeviceDefault.Light.NoActionBar
আপনি পিতামাতার মতো অন্য কোনও থিম ব্যবহার করতে পারেন।
দ্বিতীয়ত, আপনার অ্যাপে Manifest.xML android:theme="@style/splashScreenTheme"
আপনার মূল ক্রিয়াকলাপে যুক্ত করুন।
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:theme="@style/splashScreenTheme" >
তৃতীয়, আপনার onCreate () প্রবর্তন ক্রিয়াকলাপে আপনার থিম আপডেট করুন।
protected void onCreate(Bundle savedInstanceState) {
// Make sure this is before calling super.onCreate
setTheme(R.style.mainAppTheme);
super.onCreate(savedInstanceState);
}
আপডেট পরীক্ষা করে দেখুন এই পোস্টে ।
@ ম্যাট 1 এচ এবং @ অ্যাডেলরিওসানটিয়াগোকে ধন্যবাদ
<item name="android:background">
ওভাররাইড হবে windowBackground
। এবং android:background
সংজ্ঞায়িত না করে, কোনও খণ্ডে আমার ব্যাকগ্রাউন্ডটি পূর্বগ্রন্থের সামগ্রীর পিছনের ক্রিয়াকলাপটি স্বচ্ছ হতে পারে।
আপনার স্প্ল্যাশ.জাভা দেখতে দেখতে এটি দেখতে পারে:
public class Splash extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
int secondsDelayed = 1;
new Handler().postDelayed(new Runnable() {
public void run() {
startActivity(new Intent(Splash.this, ActivityB.class));
finish();
}
}, secondsDelayed * 1000);
}
}
ActivityB.class
স্প্ল্যাশ স্ক্রিনের পরে আপনি যে কোনও কার্যকলাপ শুরু করতে চান তাতে পরিবর্তন করুন
আপনার ম্যানিফেস্ট ফাইলটি পরীক্ষা করুন এবং এটির মতো দেখতে হবে
<activity android:name=".HomeScreen" android:label="@string/app_name"> </activity> <activity android:name=".Splash" android:label="@string/title_activity_splash_screen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
উপরের উত্তরগুলি খুব ভাল, তবে আমি অন্য কিছু যুক্ত করতে চাই। আমি অ্যান্ড্রয়েডে নতুন, আমি আমার বিকাশের সময় এই সমস্যাগুলি পূরণ করেছি। আশা করি এটি আমার মতো কাউকে সহায়তা করতে পারে।
স্প্ল্যাশ স্ক্রিনটি আমার অ্যাপ্লিকেশনটির প্রবেশের পয়েন্ট, সুতরাং AndroidManLive.xML এ নিম্নলিখিত লাইনগুলি যুক্ত করুন।
<activity
android:name=".SplashActivity"
android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
স্প্ল্যাশ স্ক্রিনটি একবার অ্যাপ লাইফ চক্রটিতে একবার দেখা উচিত, আমি স্প্ল্যাশ স্ক্রিনের অবস্থা রেকর্ড করতে একটি বুলিয়ান ভেরিয়েবল ব্যবহার করি এবং এটি কেবল প্রথমবার দেখায়।
public class SplashActivity extends Activity {
private static boolean splashLoaded = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!splashLoaded) {
setContentView(R.layout.activity_splash);
int secondsDelayed = 1;
new Handler().postDelayed(new Runnable() {
public void run() {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}
}, secondsDelayed * 500);
splashLoaded = true;
}
else {
Intent goToMainActivity = new Intent(SplashActivity.this, MainActivity.class);
goToMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(goToMainActivity);
finish();
}
}
}
শুভ কোডিং!
android:noHistory="true"
মধ্যে AndroidManifest.xml
ফিরে বোতাম ব্যবহার করে স্প্ল্যাশ পর্দা ফিরে যাচ্ছে ব্যবহারকারীকে প্রতিরোধ।
আবদুল্লাহর উত্তর দুর্দান্ত। তবে আমি আমার উত্তর সহ এটিতে আরও কিছু বিশদ যুক্ত করতে চাই।
একটি স্প্ল্যাশ স্ক্রিন বাস্তবায়ন করা হচ্ছে
একটি স্প্ল্যাশ স্ক্রিনটি সঠিকভাবে প্রয়োগ করা আপনি কল্পনা করার চেয়ে কিছুটা আলাদা। আপনার স্প্ল্যাশ ক্রিয়াকলাপে কোনও লেআউট ফাইল স্ফূরণ করার আগে আপনি যে স্প্ল্যাশ দৃশ্যটি দেখছেন তা অবিলম্বে প্রস্তুত হতে হবে।
সুতরাং আপনি কোনও লেআউট ফাইল ব্যবহার করবেন না। পরিবর্তে, আপনার স্প্ল্যাশ স্ক্রিনটির ব্যাকগ্রাউন্ডটিকে ক্রিয়াকলাপের থিমের পটভূমি হিসাবে উল্লেখ করুন। এটি করার জন্য, প্রথমে রেজ / অঙ্কনযোগ্য একটি এক্সএমএল অঙ্কন তৈরি করুন।
background_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
এটির সাথে কেন্দ্রের পটভূমির রঙে লোগো সহ এটি কেবল একটি স্তর তালিকাভুক্ত।
এখন স্টাইল.এক্সএমএল খুলুন এবং এই স্টাইলটি যুক্ত করুন
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
এই থিমটি অ্যাকশনবারে এবং আমরা সবেমাত্র উপরে তৈরি পটভূমি সহ করতে হবে।
এবং ম্যানিফেস্টে আপনাকে স্প্ল্যাশটেমটিকে ক্রিয়াকলাপ হিসাবে সেট করতে হবে যা আপনি স্প্ল্যাশ হিসাবে ব্যবহার করতে চান।
<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>
তারপরে আপনার ক্রিয়াকলাপের কোডের ভিতরে ব্যবহারকারীকে স্পষ্ট করার পরে নির্দিষ্ট পর্দায় নেভিগেট করুন।
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
এটি করার সঠিক উপায়। আমি এই রেফারেন্সগুলি উত্তরের জন্য ব্যবহার করেছি।
YouTube
এই সম্পর্কে একটি টিউটোরিয়াল দেখেছি । তবে আমি মনে করি বিটম্যাপ আকারটি সমস্যা হবে কারণ আপনি এটি ব্যবহার করে এটির আকার পরিবর্তন করতে পারবেন না layer-list
।
তৈরি একটি Activity
SplashScreen.java
public class SplashScreen extends Activity {
protected boolean _active = true;
protected int _splashTime = 3000; // time to display the splash screen in ms
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while (_active && (waited < _splashTime)) {
sleep(100);
if (_active) {
waited += 100;
}
}
} catch (Exception e) {
} finally {
startActivity(new Intent(SplashScreen.this,
MainActivity.class));
finish();
}
};
};
splashTread.start();
}
}
splashscreen.xml
এই মত হবে
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="600px" android:layout_height="1024px"
android:background="#FF0000">
</RelativeLayout>
ডিফল্টরূপে একটি স্প্ল্যাশ স্ক্রেন স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশনটিকে আরও পেশাদার দেখায় না। পেশাগতভাবে ডিজাইন করা স্প্ল্যাশ স্ক্রিনে আপনার অ্যাপ্লিকেশনটিকে আরও পেশাদার দেখানোর সম্ভাবনা রয়েছে তবে আপনি যদি কীভাবে লিখতে জানেন না তবে আপনার বাকী অ্যাপ্লিকেশনটি আসলে কতটা পেশাদার হবে।
স্প্ল্যাশ স্ক্রিন থাকার একমাত্র কারণ (অজুহাত) সম্পর্কে কারণ আপনি প্রচুর পরিমাণে গণনা করছেন বা জিপিএস / ওয়াইফাই শুরু হওয়ার জন্য অপেক্ষা করছেন কারণ আপনার অ্যাপ্লিকেশনটি শুরু হওয়ার আগেই তার উপর নির্ভর করে। এই গণনাগুলির ফলাফল বা জিপিএস / ওয়াইফাই (ইত্যাদি) এর অ্যাক্সেস ছাড়াই আপনার অ্যাপ্লিকেশনটি পানিতে মরে গেছে, সুতরাং আপনার মনে হয় আপনার একটি স্প্ল্যাশ স্ক্রিন দরকার, এবং অন্য কোনও চলমান প্রোগ্রামগুলির জন্য পটভূমি সহ পর্দার দৃশ্য আটকাতে হবে U )।
এরকম স্প্ল্যাশ স্ক্রিনটি আপনার সম্পূর্ণ স্ক্রিন অ্যাপ্লিকেশনটির মতো হওয়া উচিত যাতে এটি ইতিমধ্যে শুরু হয়ে গেছে এমন ধারণা দেয়, তারপরে দীর্ঘ গণনা শেষ হওয়ার পরে চূড়ান্ত বিশদটি পূরণ করা যায় (চিত্রটি টুইঙ্ক করেছে)। সুযোগ যে ক্ষেত্রে হচ্ছে বা এটি যে একমাত্র উপায় প্রোগ্রাম ডিজাইন করা পারে মহৎ ছোট ।
ব্যবহারকারীকে (এবং অপারেটিং সিস্টেমের বাকী অংশগুলি) আপনার প্রোগ্রামটিকে এমন কিছু বিষয়ের উপর নির্ভরশীল করে তুলবে যা কিছুক্ষণ সময় নেবে (যখন অপেক্ষাটির সময়কাল অনিশ্চিত থাকে) তার চেয়ে আরও কিছু করার অনুমতি দেওয়া ভাল।
আপনার ফোনে ইতিমধ্যে আইকন রয়েছে যেগুলি বলে যে জিপিএস / ওয়াইফাই শুরু হচ্ছে। স্প্ল্যাশ স্ক্রিন দ্বারা নেওয়া সময় বা স্থান প্রাক-গণনাগুলি লোড করতে বা আসলে গণনাগুলি করতে ব্যয় হতে পারে। আপনার তৈরি সমস্যাগুলির জন্য নীচের প্রথম লিঙ্কটি দেখুন এবং কী বিবেচনা করা উচিত।
আপনার যদি অবশ্যই এই গণনা বা জিপিএস / ওয়াইফাইয়ের জন্য অপেক্ষা করতে হবে তবে কেবলমাত্র অ্যাপ্লিকেশনটি শুরু করা এবং একটি পপ-আপ থাকা সবচেয়ে ভাল হবে যা বলছে যে গণনার জন্য অপেক্ষা করা দরকার (একটি পাঠ্যসূচী "আরম্ভ করা" বার্তাটি ভাল)। জিপিএস / ওয়াইফাইয়ের জন্য অপেক্ষা করা প্রত্যাশিত (যদি তারা ইতিমধ্যে অন্য কোনও প্রোগ্রামে সক্ষম না করা থাকে) তবে তাদের অপেক্ষার সময় ঘোষণা করা অপ্রয়োজনীয়।
মনে রাখবেন যে স্প্ল্যাশ স্ক্রিনটি যখন আপনার প্রোগ্রামটি শুরু হয় আসলেই ইতিমধ্যে চলছে, আপনি যা করছেন তা আপনার প্রোগ্রামটির ব্যবহারকে বিলম্ব করছে এবং সিপিইউ / জিপিইউকে এমন কিছু করতে হগিং করছে যা সবচেয়ে বেশি প্রয়োজনীয় মনে হয় না।
আমরা যতক্ষণ না আপনার প্রোগ্রামটি শুরু করি প্রতিবার আমরা আপনার স্প্ল্যাশ স্ক্রিনটি অপেক্ষা করতে এবং দেখতে চাইতাম বা আমরা এটি পেশাদারভাবে লেখা অনুভব করব না। স্প্ল্যাশ স্ক্রিনটি পুরো স্ক্রিন এবং প্রকৃত প্রোগ্রামের স্ক্রিনের একটি সদৃশ তৈরি করা (যাতে আমরা মনে করি এটি বাস্তবায়িত হয়েছিল যখন বাস্তবে এটি হয়নি) আপনার লক্ষ্য অর্জন করতে পারে (আপনার প্রোগ্রামটিকে আরও পেশাদার দেখানোর জন্য) তবে আমি এতে খুব বেশি বাজি ধরব না।
কেন এটি করবেন না: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/
এটি কীভাবে করবেন: https://encrypted.google.com/search?q=Android+splash+screen+source
সুতরাং এটি না করার একটি ভাল কারণ আছে তবে যদি আপনি নিশ্চিত হন যে কোনওভাবে আপনার পরিস্থিতি সেই উদাহরণগুলির বাইরে চলে যায় তবে এটি করার উপায়টি উপরে দেওয়া হল। নিশ্চিত হন যে এটি আপনার অ্যাপ্লিকেশনটিকে আরও বেশি পেশাদার দেখায় বা এটি করার জন্য আপনি যে একমাত্র কারণ দিয়েছেন তা আপনি পরাজিত করেছেন।
এটি এমন একটি ইউটিউব চ্যানেলের মতো যা প্রতিটি ভিডিওকে একটি দীর্ঘ গ্রাফিক ইন্ট্রো (এবং আউট্রো) দিয়ে শুরু করে বা একটি রসিকতা বলতে বা বিগত সপ্তাহে কী ঘটেছিল তা ব্যাখ্যা করার প্রয়োজনীয়তা অনুভব করে (যখন এটি কোনও কৌতুক বা লাইফস্টাইল চ্যানেল নয়)। শুধু শো প্রদর্শন! (শুধু প্রোগ্রাম চালান)
সর্বোপরি উত্তরগুলি খুব ভাল। তবে মেমোরি ফুটো হওয়ার সমস্যা রয়েছে। এই সমস্যাটি প্রায়শই অ্যান্ড্রয়েড সম্প্রদায়টিতে "একটি কার্যকলাপ ফাঁস" নামে পরিচিত । এখন এর অর্থ কী?
যখন কনফিগারেশন পরিবর্তন ঘটে, যেমন ওরিয়েন্টেশন পরিবর্তন, অ্যান্ড্রয়েড ক্রিয়াকলাপটি ধ্বংস করে এবং পুনরায় তৈরি করে। সাধারণত, আবর্জনা সংগ্রাহক কেবল পুরানো ক্রিয়াকলাপের উদাহরণের বরাদ্দ মেমরিটি সাফ করবেন এবং আমরা সবাই ভাল।
"একটি কার্যকলাপ ফাঁস" বলতে বোঝায় এমন পরিস্থিতি যেখানে আবর্জনা সংগ্রাহক পুরানো ক্রিয়াকলাপের বরাদ্দ মেমরিটি সাফ করতে পারে না কারণ এটি এমন being (strong) referenced
কোনও বস্তু যা ক্রিয়াকলাপের উদাহরণটি দিয়েছিল from প্রতিটি অ্যান্ড্রয়েড অ্যাপের জন্য নির্দিষ্ট পরিমাণ মেমরি বরাদ্দ থাকে। যখন আবর্জনা সংগ্রাহক অব্যবহৃত মেমরি মুক্ত করতে পারবেন না, তখন অ্যাপটির কার্যকারিতা ধীরে ধীরে হ্রাস পাবে এবং শেষ পর্যন্ত ক্রাশ হবে craOutOfMemory
ত্রুটির ।
অ্যাপটি মেমরি ফাঁস করে কিনা তা কীভাবে নির্ধারণ করবেন? দ্রুততম উপায় হ'ল অ্যান্ড্রয়েড স্টুডিওতে মেমরি ট্যাবটি খুলুন এবং আপনি ওরিয়েন্টেশন পরিবর্তন করার সাথে সাথে বরাদ্দ মেমরিটিতে মনোযোগ দিন। যদি বরাদ্দ মেমরিটি ক্রমাগত বাড়তে থাকে এবং কখনই হ্রাস না করে তবে আপনার মেমরি ফাঁস হয়।
1. ব্যবহারকারী যখন অরিয়েন্টেশন পরিবর্তন করে তখন মেমরি ফুটো।
প্রথমে আপনাকে আপনার লেআউট রিসোর্স splashscreen.xml
ফাইলে স্প্ল্যাশ স্ক্রিনটি সংজ্ঞায়িত করতে হবে
স্প্ল্যাশ স্ক্রিন ক্রিয়াকলাপের জন্য নমুনা কোড।
public class Splash extends Activity {
// 1. Create a static nested class that extends Runnable to start the main Activity
private static class StartMainActivityRunnable implements Runnable {
// 2. Make sure we keep the source Activity as a WeakReference (more on that later)
private WeakReference mActivity;
private StartMainActivityRunnable(Activity activity) {
mActivity = new WeakReference(activity);
}
@Override
public void run() {
// 3. Check that the reference is valid and execute the code
if (mActivity.get() != null) {
Activity activity = mActivity.get();
Intent mainIntent = new Intent(activity, MainActivity.class);
activity.startActivity(mainIntent);
activity.finish();
}
}
}
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 1000;
// 4. Declare the Handler as a member variable
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
// 5. Pass a new instance of StartMainActivityRunnable with reference to 'this'.
mHandler.postDelayed(new StartMainActivityRunnable(this), SPLASH_DISPLAY_LENGTH);
}
// 6. Override onDestroy()
@Override
public void onDestroy() {
// 7. Remove any delayed Runnable(s) and prevent them from executing.
mHandler.removeCallbacksAndMessages(null);
// 8. Eagerly clear mHandler allocated memory
mHandler = null;
}
}
আরও তথ্যের জন্য দয়া করে এই লিঙ্কটি মাধ্যমে যান
4 এর 5 এর স্প্ল্যাশ স্ক্রিনে অকারণে থামানো খুব বেশি অর্থবোধ করে না। আপনি যদি পটভূমিতে কোনও কিছু লোড করেন তবে স্প্ল্যাশ স্ক্রিন প্রয়োগ করতে এই পদ্ধতির অনুসরণ করুন: - একটি স্প্ল্যাশ স্ক্রিনটি সঠিক উপায়ে প্রয়োগ করা আপনার কল্পনার চেয়ে কিছুটা আলাদা। আপনার স্প্ল্যাশ ক্রিয়াকলাপে কোনও লেআউট ফাইল স্ফূরণ করার আগে আপনি যে স্প্ল্যাশ দৃশ্যটি দেখছেন তা অবিলম্বে প্রস্তুত হতে হবে।
সুতরাং আপনি কোনও লেআউট ফাইল ব্যবহার করবেন না। পরিবর্তে, আপনার স্প্ল্যাশ স্ক্রিনটির ব্যাকগ্রাউন্ডটিকে ক্রিয়াকলাপের থিমের পটভূমি হিসাবে উল্লেখ করুন। এটি করার জন্য, প্রথমে রেজ / অঙ্কনযোগ্য একটি এক্সএমএল অঙ্কন তৈরি করুন।
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
এখানে, আমি একটি ব্যাকগ্রাউন্ড রঙ এবং একটি চিত্র সেট আপ করেছি।
এরপরে, আপনি এটিকে থিমটিতে আপনার স্প্ল্যাশ ক্রিয়াকলাপের পটভূমি হিসাবে সেট করবেন। আপনার স্টাইল.এক্সএমএল ফাইলে নেভিগেট করুন এবং আপনার স্প্ল্যাশ ক্রিয়াকলাপের জন্য একটি নতুন থিম যুক্ত করুন:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
আপনার নতুন স্প্ল্যাশ থিমে, আপনার এক্সএমএল অঙ্কনযোগ্যটির জন্য উইন্ডো ব্যাকগ্রাউন্ডের বৈশিষ্ট্যটি সেট করুন। আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে আপনার স্প্ল্যাশ ক্রিয়াকলাপের থিম হিসাবে এটি কনফিগার করুন:
<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>
অবশেষে, স্প্ল্যাশঅ্যাক্টিভিটি ক্লাসটি আপনাকে কেবল আপনার মূল ক্রিয়াকলাপে এগিয়ে পাঠাতে হবে:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
আরও বিশদ এটি পড়ুন: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3-tips-to-create-a গ্রেট-স্প্ল্যাশ-স্ক্রীন-জন্য-আপনার-মোবাইল-app_a287.html
এটি এখানে সম্পূর্ণ কোড
SplashActivity.java
public class SplashActivity extends AppCompatActivity {
private final int SPLASH_DISPLAY_DURATION = 1000;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_DURATION);
}}
অঙ্কনযোগ্যগুলিতে এই bg_splash.xML তৈরি করুন
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/app_color"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_in_app_logo_big"/>
</item></layer-list>
ইন styles.xml একটি কাস্টম থিম তৈরি
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/bg_splash</item>
</style>
এবং অবশেষে AndroidManLive.xML এ আপনার ক্রিয়াকলাপে থিমটি নির্দিষ্ট করুন
<activity
android:name=".activities.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
চিয়ার্স।
drawable
লেআউট ফাইল থেকে স্প্ল্যাশ স্ক্রিনগুলি লোড করা উচিত নয়, এটি লোড করার সময় কিছুটা পিছিয়ে থাকতে পারে।
সর্বোত্তম উপায় হ'ল আপনার স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটির জন্য একটি থিম তৈরি করা এবং একটি অঙ্কনীয় রিসোর্সায় সেট the android:windowBackground
করা।
https://www.bignerdranch.com/blog/splash-screens-the-right-way/
সংক্ষেপে:
ম্যানিফেস্টে আপনার স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি ঘোষণা করুন:
<activity
android:name=".activities.SplashScreenActivity"
android:theme="@style/SplashTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
আপনার স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জভাতে:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity_.class);
startActivity(intent);
finish();
}
পরবর্তী আপনার থিমের পটভূমি উইন্ডো জন্য রিসোর্স তৈরি করুন:
<style name="SplashTheme" parent="Theme.Bumpfie.Base">
<item name="android:windowBackground">@drawable/splash</item>
</style>
অঙ্কনযোগ্য ফাইল স্প্ল্যাশ.এক্সএমএল:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/app_logo"/>
</item>
</layer-list>
অ্যান্ড্রয়েড মার্শমেলোর পরে , স্প্ল্যাশ স্ক্রিনের অন্যান্য উত্পাদনশীল ব্যবহার আমি আপনার অ্যাপের স্প্ল্যাশ স্ক্রিনে প্রয়োজনীয় অনুরোধAndroid Permissions
করছি বলে মনে করি ।
দেখে মনে হচ্ছে বেশিরভাগ অ্যাপ্লিকেশনগুলি এইভাবে অনুমতি অনুরোধটি পরিচালনা করে।
কথোপকথনগুলি খারাপ ইউআইএক্স তৈরি করে এবং এগুলি মূল প্রবাহটি ভেঙে দেয় এবং আপনাকে রানটাইম এবং সত্যের বিষয়ে সিদ্ধান্ত নিতে বাধ্য করে যে আপনার অ্যাপ্লিকেশনটি এসডি কার্ডে কিছু লিখতে চায় কিনা তা বেশিরভাগ ব্যবহারকারীরা এমনকি যত্নও করতে পারে না। তাদের মধ্যে কেউ কেউ হয়তো বুঝতেও পারছেন না যে আমরা এটি স্পষ্ট ইংরেজী ভাষায় অনুবাদ না করা পর্যন্ত আমরা কী জানাতে চাইছি।
অনুমতিগুলির অনুরোধের সময় প্রতিটি ক্রিয়াকলাপের আগে "অন্যথায়" কম সংখ্যক তৈরি করুন এবং আপনার কোডটিকে বিশৃঙ্খলা মুক্ত দেখায়।
এটি অ্যান্ড্রয়েড ওএস 23+ চালিত ডিভাইসের জন্য আপনার স্প্ল্যাশ ক্রিয়াকলাপে কীভাবে অনুমতি চাইতে পারেন তার একটি উদাহরণ।
যদি সমস্ত অনুমতি দেওয়া হয় বা ইতিমধ্যে মঞ্জুর করা হয়েছে বা প্রি মার্শমালোয় অ্যাপ্লিকেশন চলমান থাকে তবে কেবলমাত্র যান এবং অর্ধ সেকেন্ডের অল্প বিলম্বের সাথে প্রধান বিষয়বস্তু প্রদর্শন করুন যাতে ব্যবহারকারী এই প্রশ্নটি পড়ে এবং আমাদের সেরাটি দেওয়ার চেষ্টা করার জন্য আমরা যে প্রচেষ্টা চালিয়েছি তার প্রশংসা করতে পারে।
import android.Manifest;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import com.c2h5oh.beer.R;
import com.c2h5oh.beer.utils.Animatrix;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SplashActivity extends AppCompatActivity {
final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
//show animations
Animatrix.scale(findViewById(R.id.title_play), 100);
Animatrix.scale(findViewById(R.id.title_edit), 100);
Animatrix.scale(findViewById(R.id.title_record), 100);
Animatrix.scale(findViewById(R.id.title_share), 100);
if (Build.VERSION.SDK_INT >= 23) {
// Marshmallow+ Permission APIs
fuckMarshMallow();
} else {
// Pre-Marshmallow
///Display main contents
displaySplashScreen();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS: {
Map<String, Integer> perms = new HashMap<String, Integer>();
// Initial
perms.put(Manifest.permission.READ_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.RECORD_AUDIO, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.MODIFY_AUDIO_SETTINGS, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.VIBRATE, PackageManager.PERMISSION_GRANTED);
// Fill with results
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
// Check for ACCESS_FINE_LOCATION
if (perms.get(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.VIBRATE) == PackageManager.PERMISSION_GRANTED) {
// All Permissions Granted
// Permission Denied
Toast.makeText(SplashActivity.this, "All Permission GRANTED !! Thank You :)", Toast.LENGTH_SHORT)
.show();
displaySplashScreen();
} else {
// Permission Denied
Toast.makeText(SplashActivity.this, "One or More Permissions are DENIED Exiting App :(", Toast.LENGTH_SHORT)
.show();
finish();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
@TargetApi(Build.VERSION_CODES.M)
private void fuckMarshMallow() {
List<String> permissionsNeeded = new ArrayList<String>();
final List<String> permissionsList = new ArrayList<String>();
if (!addPermission(permissionsList, Manifest.permission.READ_EXTERNAL_STORAGE))
permissionsNeeded.add("Read SD Card");
if (!addPermission(permissionsList, Manifest.permission.RECORD_AUDIO))
permissionsNeeded.add("Record Audio");
if (!addPermission(permissionsList, Manifest.permission.MODIFY_AUDIO_SETTINGS))
permissionsNeeded.add("Equilizer");
if (!addPermission(permissionsList, Manifest.permission.VIBRATE))
permissionsNeeded.add("Vibrate");
if (permissionsList.size() > 0) {
if (permissionsNeeded.size() > 0) {
// Need Rationale
String message = "App need access to " + permissionsNeeded.get(0);
for (int i = 1; i < permissionsNeeded.size(); i++)
message = message + ", " + permissionsNeeded.get(i);
showMessageOKCancel(message,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
}
});
return;
}
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
return;
}
Toast.makeText(SplashActivity.this, "No new Permission Required- Launching App .You are Awesome!!", Toast.LENGTH_SHORT)
.show();
displaySplashScreen();
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(SplashActivity.this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
@TargetApi(Build.VERSION_CODES.M)
private boolean addPermission(List<String> permissionsList, String permission) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
// Check for Rationale Option
if (!shouldShowRequestPermissionRationale(permission))
return false;
}
return true;
}
/**
* Display main content with little delay just so that user can see
* efforts I put to make this page
*/
private void displaySplashScreen() {
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
startActivity(new Intent(SplashActivity.this, AudioPlayerActivity.class));
finish();
}
}, 500);
}
}
আপনি কোনও লেআউট ফাইল ব্যবহার করবেন না। পরিবর্তে, আপনার স্প্ল্যাশ স্ক্রিনটির ব্যাকগ্রাউন্ডটিকে ক্রিয়াকলাপের থিমের পটভূমি হিসাবে উল্লেখ করুন। এটি করার জন্য, প্রথমে রেজ / অঙ্কনযোগ্য একটি এক্সএমএল অঙ্কন তৈরি করুন।
দ্রষ্টব্য: নীচের সমস্ত কোড গিটহাব লিঙ্ক উপলব্ধ
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
এখানে, আমি একটি ব্যাকগ্রাউন্ড রঙ এবং একটি চিত্র সেট আপ করেছি।
এরপরে, আপনি এটিকে থিমটিতে আপনার স্প্ল্যাশ ক্রিয়াকলাপের পটভূমি হিসাবে সেট করবেন। আপনার স্টাইল.এক্সএমএল ফাইলে নেভিগেট করুন এবং আপনার স্প্ল্যাশ ক্রিয়াকলাপের জন্য একটি নতুন থিম যুক্ত করুন:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
আপনার নতুন স্প্ল্যাশ থিমে, আপনার এক্সএমএল অঙ্কনযোগ্যটির জন্য উইন্ডো ব্যাকগ্রাউন্ডের বৈশিষ্ট্যটি সেট করুন। আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে আপনার স্প্ল্যাশ ক্রিয়াকলাপের থিম হিসাবে এটি কনফিগার করুন:
<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>
অবশেষে, আপনার স্প্ল্যাশঅ্যাক্টিভিটি ক্লাসটি আপনাকে কেবল আপনার মূল ক্রিয়াকলাপের দিকে এগিয়ে পাঠানো উচিত:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
লক্ষ্য করুন যে আপনি এই স্প্ল্যাশঅ্যাক্টিভিটির জন্য কোনও দৃশ্য সেট আপ করেন না। ভিউ থিম থেকে আসে। আপনি যখন থিমটিতে আপনার স্প্ল্যাশ ক্রিয়াকলাপের জন্য UI সেট আপ করেন, তা অবিলম্বে উপলব্ধ।
আপনার স্প্ল্যাশ ক্রিয়াকলাপের জন্য যদি আপনার কোনও লেআউট ফাইল থাকে, তবে আপনার অ্যাপ্লিকেশন সম্পূর্ণরূপে শুরু হওয়ার পরে সেই লেআউট ফাইলটি ব্যবহারকারীদের কাছে দৃশ্যমান হবে যা খুব দেরিতে। আপনি অ্যাপ্লিকেশন শুরু হওয়ার আগে স্প্ল্যাশটি কেবল সেই অল্প সময়ের মধ্যেই প্রদর্শিত হতে চান।
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread t=new Thread()
{
public void run()
{
try {
sleep(2000);
finish();
Intent cv=new Intent(MainActivity.this,HomeScreen.class/*otherclass*/);
startActivity(cv);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
};
t.start();
}
একটি ক্রিয়াকলাপ তৈরি করুন, আসুন আমরা 'এ' নামক ক্রিয়াকলাপ করি, তারপরে একটি স্প্ল্যাশ স্ক্রিন চিত্রটিকে ব্যাকগ্রাউন্ড হিসাবে সেট করে মাইস্ক্রিন.এক্সএমএল নামে একটি এক্সএমএল ফাইল তৈরি করুন এবং তারপরে একটি অ্যাক্টিভিটি থেকে অন্যটিতে নেভিগেট করতে কাউন্ট ডাউন টাইমার ব্যবহার করুন। কাউন্ট ডাউন টাইমার কীভাবে ব্যবহার করবেন তা জানতে আমার এন্ড্রয়েডে টাইমার টাস্ক এই প্রশ্নের উত্তরটি দেখুন ?
স্প্ল্যাশ পর্দার উদাহরণ:
public class MainActivity extends Activity {
private ImageView splashImageView;
boolean splashloading = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
splashImageView = new ImageView(this);
splashImageView.setScaleType(ScaleType.FIT_XY);
splashImageView.setImageResource(R.drawable.ic_launcher);
setContentView(splashImageView);
splashloading = true;
Handler h = new Handler();
h.postDelayed(new Runnable() {
public void run() {
splashloading = false;
setContentView(R.layout.activity_main);
}
}, 3000);
}
}
স্প্ল্যাশ স্ক্রিনটি অ্যান্ড্রয়েডে কিছুটা অব্যবহৃত অবজেক্ট: মূল ক্রিয়াকলাপ শুরু হওয়ার বিলম্বটি লুকানোর জন্য এটি যত তাড়াতাড়ি সম্ভব লোড করা যায় না। এটি ব্যবহার করার দুটি কারণ রয়েছে: বিজ্ঞাপন এবং নেটওয়ার্ক অপারেশন।
কথোপকথন হিসাবে বাস্তবায়ন স্প্ল্যাশ স্ক্রিন থেকে ক্রিয়াকলাপের প্রধান UI এ দেরি না করে লাফিয়ে তোলে।
public class SplashDialog extends Dialog {
ImageView splashscreen;
SplashLoader loader;
int splashTime = 4000;
public SplashDialog(Context context, int theme) {
super(context, theme);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
setCancelable(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
cancel();
}
}, splashTime);
}
}
লেআউট:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white">
<ImageView
android:id="@+id/splashscreen"
android:layout_width="190dp"
android:layout_height="190dp"
android:background="@drawable/whistle"
android:layout_centerInParent="true" />
</RelativeLayout>
এবং শুরু করুন:
public class MyActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getCategories() != null && getIntent().getCategories().contains("android.intent.category.LAUNCHER")) {
showSplashScreen();
}
}
protected Dialog splashDialog;
protected void showSplashScreen() {
splashDialog = new SplashDialog(this, R.style.SplashScreen);
splashDialog.show();
}
...
}
কাউন্টডাউনটাইমার ব্যবহার করে আরেকটি পন্থা অর্জন করা যায়
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
new CountDownTimer(5000, 1000) { //5 seconds
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}
}.start();
}
- Add in SplashActivity
public class SplashActivity extends Activity {
private ProgressBar progressBar;
int i=0;
Context context;
private GoogleApiClient googleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
context = this;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(Splash.this, LoginActivity.class));
finish();
}
}, 2000);
}
}
- Add in activity_splash.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:background="@color/colorAccent"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Splash">
<ImageView
android:id="@+id/ivLogo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/icon_splash"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"/>
<ProgressBar
android:id="@+id/circle_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:max="100"
android:progressTint="@color/green"
android:visibility="visible" />
</RelativeLayout>
- Add in AndroidManifest.xml
<activity android:name="ex.com.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
সত্যিই সহজ & gr8 পদ্ধতির:
প্রথমে নীচের ওয়েবসাইটটি দিয়ে আপনার স্প্ল্যাশ তৈরি করুন:
https://www.norio.be/android-feature-graphic-generator/
আপনার লোগো এবং স্লোগান চয়ন করুন, আপনার সুন্দর পটভূমি চয়ন করুন। এটি 4096x4096 এ আকার দিন।
এখন সেই চিত্রটি ডাউনলোড করুন এবং এটিকে আপলোড করুন:
https://apetools.webprofusion.com/app/#/tools/imagegorilla
এবং প্রয়োজনীয় সমস্ত স্প্ল্যাশ স্ক্রিন, সমস্ত ডিভাইস, সমস্ত প্ল্যাটফর্ম তৈরি করে।
উপভোগ করুন!
এখানে যথেষ্ট উত্তর রয়েছে যা বাস্তবায়নে সহায়তা করবে। এই পোস্টটি স্প্ল্যাশ স্ক্রিন তৈরির প্রথম ধাপে অন্যকে সহায়তা করার জন্য বোঝানো হয়েছিল!
কীভাবে একটি সুপার-নমনীয় লঞ্চ স্ক্রিন যা একই কোড ব্যবহার করতে পারে এবং অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল সংজ্ঞায়িত হয়েছে, তাই কোডটি কখনই পরিবর্তন করার প্রয়োজন হবে না। আমি সাধারণত কোডের লাইব্রেরিগুলি বিকাশ করি এবং কোডটি কাস্টমাইজ করা পছন্দ করি না কারণ এটি মলা।
<activity
android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="launch_class" android:value="com.mypackage.MyFirstActivity" />
<meta-data android:name="duration" android:value="5000" />
</activity>
তারপরে স্পেন্টএক্টিভিটি নিজেই "লঞ্চ_ক্লাস" এর জন্য মেটা-ডেটা সন্ধান করে তারপরে নিজেই উদ্দীপনা তৈরি করতে। মেটা ডেটা "সময়কাল" স্প্ল্যাশ স্ক্রিনটি কতক্ষণ ধরে থাকে তা সংজ্ঞায়িত করে।
public class SplashActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_splash);
ComponentName componentName = new ComponentName(this, this.getClass());
try {
Bundle bundle = null;
bundle = getPackageManager().getActivityInfo(componentName, PackageManager.GET_META_DATA).metaData;
String launch_class = bundle.getString("launch_class");
//default of 2 seconds, otherwise defined in manifest
int duration = bundle.getInt("duration", 2000);
if(launch_class != null) {
try {
final Class<?> c = Class.forName(launch_class);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, c);
startActivity(intent);
finish();
}
}, duration);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
কিছুদিন ব্যবহারকারী খুলুন SplashActivity
এবং অবিলম্বে প্রস্থান কিন্তু অ্যাপ্লিকেশন এখনও যেতে MainActivity
পরে SPLASH_SCREEN_DISPLAY_LENGTH
।
এটি প্রতিরোধের জন্য: SplashActivity
আপনার চেক করা উচিত SplashActivity
আগে যাওয়ার আগে শেষ হচ্ছে কিনাMainActivity
public class SplashActivity extends Activity {
private final int SPLASH_SCREEN_DISPLAY_LENGTH = 2000;
@Override
public void onCreate(Bundle icicle) {
...
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (!isFinishing()) {//isFinishing(): If the activity is finishing, returns true; else returns false.
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}
}, SPLASH_SCREEN_DISPLAY_LENGTH);
}
}
}
এই সাহায্য আশা করি
যদিও ভাল উত্তর আছে, আমি গুগল প্রস্তাবিত উপায় প্রদর্শন করব:
1) প্রথমে Theme
স্প্ল্যাশ স্ক্রিনের জন্য একটি তৈরি করুন: আপনার কাছে একটি থিম বলা হয়েছে splashscreenTheme
, আপনার প্রবর্তক থিমটি হ'ল:
<style name="splashscreenTheme">
<item name="android:windowBackground">@drawable/launch_screen</item>
</style>
বিঃদ্রঃ:
android:windowBackground
ইতিমধ্যে আপনার স্প্ল্যাশস্ক্রিন চিত্রটি
আবার ইউআইতে করার দরকার নেই ।
আপনি এখানে অঙ্কনযোগ্য পরিবর্তে রঙ ব্যবহার করতে পারেন।
2) স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি প্রকাশের জন্য থিমটি সেট করুন
<activity
android:name=".activity.splashscreenActivity"
android:screenOrientation="portrait"
android:theme="@style/splashscreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
3) নিশ্চিত করুন যে আপনি launch_screen drawable
না হয় drawable
ফোল্ডারের যদি আপনার ইমেজ ছোট নয়।
এটি দ্রুত প্রবর্তন স্ক্রিন আরম্ভ করবে এবং আপনাকে কালো পর্দা থেকে বাঁচাবে
এটি অতিরিক্ত ওভারড্রও এড়িয়ে যায়
এটি আমি স্প্ল্যাশ স্ক্রিনে দেখা সেরা পোস্ট: http://saulmm.github.io/avoding-android-cold-starts
সল মোলিনেরো স্প্ল্যাশ স্ক্রিনগুলির জন্য দুটি পৃথক বিকল্পে চলেছে: আপনার প্রাথমিক পর্দায় সঞ্চারিত করার জন্য উইন্ডো ব্যাকগ্রাউন্ডের সুবিধা গ্রহণ করা এবং স্থানধারক UI প্রদর্শন করা (যা এই দিনগুলিতে গুগল তাদের অ্যাপগুলির বেশিরভাগ জন্য ব্যবহার করে এমন একটি জনপ্রিয় পছন্দ)।
আমি দীর্ঘ সময় শুরুর বারের কারণে শীতল শুরুর সময় বিবেচনা করা এবং ব্যবহারকারীর ড্রপঅফ এড়ানো প্রয়োজন হিসাবে এই পোস্টটি উল্লেখ করি।
আশাকরি এটা সাহায্য করবে!
আমার ক্ষেত্রে আমি কেবল 2 সেকেন্ডের জন্য একটি চিত্র দেখানোর জন্য একটি নতুন ক্রিয়াকলাপ তৈরি করতে চাইনি। আমার শুরু করার সময় MainAvtivity
, চিত্রগুলি পিকাসো ব্যবহার করে ধারকগুলিতে লোড হয়ে যায়, আমি জানি যে এটি লোড হতে প্রায় 1 সেকেন্ড সময় নেয় তাই আমি আমার মেইনএকটিভিটির ভিতরে নিম্নলিখিতটি করার সিদ্ধান্ত নিয়েছি OnCreate
:
splashImage = (ImageView) findViewById(R.id.spllll);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
int secondsDelayed = 1;
new Handler().postDelayed(new Runnable() {
public void run() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
splashImage.setVisibility(View.GONE);
}
}, secondsDelayed * 2000);
অ্যাপ্লিকেশনটি শুরু করার সময় প্রথম জিনিসটি ঘটে যা হ'ল ImageView
প্রদর্শিত হয় এবং স্ট্যাটাসবারটি পুরো স্ক্রিনে উইন্ডোগুলি পতাকা সেট করে মুছে ফেলা হয়। তারপর আমি একটি ব্যবহৃত Handler
, 2 সেকেন্ডের জন্য চালানোর জন্য 2 সেকেন্ডের পর আমি পূর্ণ পর্দায় পতাকা পরিষ্কার এবং দৃশ্যমানতা সেট ImageView
করতে GONE
। সহজ, সহজ, কার্যকর
অ্যান্ড্রয়েডে এটি সত্যিই সহজ আমরা স্প্ল্যাশ স্ক্রিন বাস্তবায়নের জন্য হ্যান্ডলার ধারণাটি ব্যবহার করি
আপনার স্প্ল্যাশস্ক্রিন্টিভিটি জাভা ফাইলটিতে এই কোডটি পেস্ট করুন।
আপনার স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি এক্সএমএল ফাইলে চিত্রের ভিউ ব্যবহার করে যে কোনও ছবি রাখুন।
public void LoadScreen() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashScreenActivity.this, AgilanbuGameOptionsActivity.class);
startActivity(i);
}
}, 2000);
}
আপনি এটি আপনার অনক্রিয়া পদ্ধতিতে যুক্ত করতে পারেন
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// going to next activity
Intent i=new Intent(SplashScreenActivity.this,MainActivity.class);
startActivity(i);
finish();
}
},time);
এবং আপনার সময়ের হিসাবে মিলি সেকেন্ডে আপনার সময় মানটি আরম্ভ করুন ...
private static int time=5000;
আরও তথ্যের জন্য এই লিঙ্ক থেকে সম্পূর্ণ কোড ডাউনলোড করুন ...
কোটলিনে এই কোডটি লিখুন: -
Handler().postDelayed({
val mainIntent = Intent(this@SplashActivity, LoginActivity::class.java)
startActivity(mainIntent)
finish()
}, 500)
আশা করি এটি আপনাকে সাহায্য করবে। ধন্যবাদ ........
public class SplashActivity extends Activity {
Context ctx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ctx = this;
setContentView(R.layout.activity_splash);
Thread thread = new Thread(){
public void run(){
try {
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent in = new Intent(ctx,MainActivity.class);
startActivity(in);
finish();
}
};
thread.start();
}
}