অ্যান্ড্রয়েড - প্রারম্ভকালে সাদা পর্দা রোধ করুন


110

যেমনটি আমরা সবাই জানি, অনেকগুলি অ্যান্ড্রয়েড অ্যাপ্লিকেশন তাদের প্রথম নজরে আসার আগে খুব আগে সংক্ষেপে একটি সাদা স্ক্রিন প্রদর্শন করে Activity। এই সমস্যা নিম্নলিখিত ক্ষেত্রে পরিলক্ষিত হয়:

  • অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি যা বিশ্বব্যাপী Applicationশ্রেণিকে প্রসারিত করে এবং এর মধ্যে বড় সূচনা করে। Application বস্তুর সবসময় প্রথম আগে তৈরি করা হয় Activity(ক সত্য যে ডিবাগার পরিলক্ষিত করা যেতে পারে) তাই এই জ্ঞান করে তোলে। এটি আমার ক্ষেত্রে দেরি হওয়ার কারণ।

  • অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি স্প্ল্যাশ স্ক্রিনের আগে ডিফল্ট পূর্বরূপ উইন্ডোটি প্রদর্শন করে।

এখানে সেট আপ android:windowDisablePreview = "true"স্পষ্টতই কাজ করে না। আমি স্প্ল্যাশ স্ক্রিনের মূল থিমটি এখানেTheme.Holo.NoActionBar বর্ণিত হিসাবে সেট করতে পারি না কারণ [দুর্ভাগ্যক্রমে] আমার স্প্ল্যাশ স্ক্রিনটি একটি ব্যবহার করেActionBar

এদিকে, Applicationক্লাসটি প্রসারিত না করে এমন অ্যাপগুলি প্রারম্ভকালে সাদা পর্দা প্রদর্শন করে না

জিনিসটি হ'ল, আদর্শভাবে প্রথমটি প্রদর্শিত Applicationহওয়ার আগে অবজেক্টে সম্পাদিত সূচনাগুলি হওয়া দরকার Activity। সুতরাং আমার প্রশ্ন হ'ল আমি কীভাবে কোনও অবজেক্ট ব্যবহার না করে অ্যাপ স্টার্টআপে এই সূচনাগুলি সম্পাদন করতে পারি Application? সম্ভবত একটি Threadবা ব্যবহার করে Service, আমি মনে করি?

এটি ভাবতে আগ্রহী সমস্যা। আমি এটিকে স্বাভাবিক উপায়ে ( NoActionBarথিম সেট করে ) বাইপাস করতে পারি না , কারণ ট্র্যাজিকভাবে আমার স্প্ল্যাশ স্ক্রিনটির ActionBarকিছু সম্পর্কহীন কারণে আসলে।

বিঃদ্রঃ:

আমি ইতিমধ্যে নিম্নলিখিত প্রশ্নগুলি উল্লেখ করেছি:

তথ্যসূত্র:


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

এটি সাহায্য করতে পারে
সর্বাধিক

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

1
আপনি Applicationক্লাসের বাইরে সমস্ত ইনিশিয়েশনকোড সরিয়ে নেওয়ার পরেও দেখতে পাবেন যে এটি এখনও একটি সমস্যা । এটি অ্যান্ড্রয়েডের অ্যাপ্লিকেশনগুলিকে "কোল্ড-স্টার্টিং" এর নতুন সংস্করণগুলির কারণে। গুগল এই বছর গুগল আই / ও-তে লঞ্চটাইমগুলিকে সম্বোধন করেছে এবং আমার মনে পড়ে যা থেকে এটি এন এ স্থির করা হবে। এর মধ্যে, গুগল কী "ব্র্যান্ডযুক্ত লঞ্চস্ক্রিন" নামে ডাকে তা আপনার দিকে নজর দেওয়া উচিত। এটি কীভাবে তৈরি করা যায় তার একটি উদাহরণ এখানে রয়েছে: antonioleiva.com/bra ब्र্যান্ড-launch- স্ক্রিন - আর কোনও সাদা পর্দা আরম্ভের মধ্যে নেই ;-) এবং দয়া করে স্প্ল্যাশস্ক্রিন ব্যবহার করবেন না - এটি ব্যবহারকারীর বিরক্তিকর।
দারউইন্ড

1
Wrt থিম, কৌশলটি NoActionBar থিম সেট করার নয়, এটি প্রাথমিক ক্রিয়াকলাপের থিমটি সামঞ্জস্য করতে হবে যাতে খালি থিমযুক্ত স্ক্রিনটি সম্পূর্ণ আর্টিনাইজডের মতো দেখতে লাগে।
zapl

উত্তর:


86

সাদা ব্যাকগ্রাউন্ডে সমস্যাটি অ্যান্ড্রয়েডের শীতল শুরু হওয়ার কারণে ঘটেছিল যখন অ্যাপটি মেমরিটিতে লোড করে এবং এটি এড়ানো যায়:

public class OnboardingWithCenterAnimationActivity extends AppCompatActivity {
public static final int STARTUP_DELAY = 300;
public static final int ANIM_ITEM_DURATION = 1000;
public static final int ITEM_DELAY = 300;

private boolean animationStarted = false;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    setTheme(R.style.AppTheme);
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_onboarding_center);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {

    if (!hasFocus || animationStarted) {
        return;
    }

    animate();

    super.onWindowFocusChanged(hasFocus);
}

private void animate() {
    ImageView logoImageView = (ImageView) findViewById(R.id.img_logo);
    ViewGroup container = (ViewGroup) findViewById(R.id.container);

    ViewCompat.animate(logoImageView)
        .translationY(-250)
        .setStartDelay(STARTUP_DELAY)
        .setDuration(ANIM_ITEM_DURATION).setInterpolator(
            new DecelerateInterpolator(1.2f)).start();

    for (int i = 0; i < container.getChildCount(); i++) {
        View v = container.getChildAt(i);
        ViewPropertyAnimatorCompat viewAnimator;

        if (!(v instanceof Button)) {
            viewAnimator = ViewCompat.animate(v)
                    .translationY(50).alpha(1)
                    .setStartDelay((ITEM_DELAY * i) + 500)
                    .setDuration(1000);
        } else {
            viewAnimator = ViewCompat.animate(v)
                    .scaleY(1).scaleX(1)
                    .setStartDelay((ITEM_DELAY * i) + 500)
                    .setDuration(500);
        }

        viewAnimator.setInterpolator(new DecelerateInterpolator()).start();
    }
}
}

বিন্যাস

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorPrimary"
android:orientation="vertical"
>

<LinearLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingTop="144dp"
    tools:ignore="HardcodedText"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="16dp"
        android:alpha="0"
        android:text="Hello world"         android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
        android:textColor="@android:color/white"
        android:textSize="22sp"
        tools:alpha="1"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="8dp"
        android:alpha="0"
        android:gravity="center"
        android:text="This a nice text"
      android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle.Inverse"
        android:textSize="20sp"
        tools:alpha="1"
        />

    <Button
        android:id="@+id/btn_choice1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="48dp"
        android:scaleX="0"
        android:scaleY="0"
        android:text="A nice choice"
        android:theme="@style/Button"
        />

    <Button
        android:id="@+id/btn_choice2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:scaleX="0"
        android:scaleY="0"
        android:text="Far better!"
        android:theme="@style/Button"
        />

</LinearLayout>

<ImageView
    android:id="@+id/img_logo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/img_face"
    tools:visibility="gone"
    />
</FrameLayout>

img চেহারা

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

<item android:drawable="?colorPrimary"/>
<item>
    <bitmap
        android:gravity="center"
        android:src="@drawable/img_face"/>
</item>

ম্যানিফেস্টে এই থিমটি আপনার স্প্ল্যাশস্ক্রিনে যুক্ত করুন

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@null</item>
</style>

<style name="AppTheme.CenterAnimation">
    <item name="android:windowBackground">@drawable/ll_face_logo</item>
</style>

যা এই জাতীয় প্রভাব ফেলবে

একটি ব্যস্ত বিড়াল

আরও বিশদ এবং আরও সমাধানের জন্য আপনি এই ব্লগপোস্টটি পরীক্ষা করতে পারেন


3
এটি এখনও সাদা পর্দা এবং অ্যানিমেশনটিকে শেষ পর্যন্ত সাহায্য করতে পারেনি
মেহভিশ আলী

এটি সরাসরি এগিয়ে বাস্তবায়ন। আপনার কোডের আরও কিছু অংশ থাকতে পারে যা সমস্যাটি সৃষ্টি করে। দয়া করে অন্য প্রশ্নটি খুলুন এবং আপনাকে সহায়তা করার জন্য সেখানে থাকুন :)
ইভান মিলিসাভলজেভিচ

1
আমি থিমগুলির মধ্যে অ্যানিমেট করে এবং থিম পরিবর্তনযোগ্য ছাড়াই কেবল ব্যাক রঙের একই সাথে এবং তারপরে onWindowFocusChanged () সামগ্রীটি দৃশ্যমান এবং অ্যানিমেটেডের মাধ্যমে এই সমস্যাটি সমাধানের মধ্যে দিয়ে আমার সাদাকে আরও উত্তেজিত করে তুললাম। থিমগুলির অ্যানিমেশন অনেক সাহায্য করেছে
মেহভিশ আলী

93

দয়া করে আপনার অ্যাপ থিমটিতে এই লাইনটি যুক্ত করুন

<item name="android:windowDisablePreview">true</item>

আরও তথ্যের জন্য: https://developer.android.com/topic/performance/vital/launch-time# থিম


25
এটি অ্যাপ্লিকেশনটি 2 সেকেন্ডের জন্য স্থির করে এবং তারপরে অ্যাপ্লিকেশন লঞ্চ করা আমার পক্ষে কার্যকর নয়!
ফাখির 12

4
গ্রেট করুন এখন এটি #ffffff রঙ দেখাচ্ছে না তবে এটি এখন # 000000 দেখাচ্ছে
মিডিলাজ

@ ফাখির আপনি কি কোনও সমাধান খুঁজে পেয়েছেন? আমি এখনও একটি সমাধান খুঁজছি, যা এই সাদা পর্দাটি সরিয়ে দেয় এবং প্রবর্তনের সময়টিতে কোনও বিলম্ব নেই।
রূপম দাস

33

দয়া করে আপনার প্রকাশিত অ্যাপ্লিকেশন থিমে এই দুটি লাইন অনুলিপি করুন এবং পুনরায় / স্টাইল / অ্যাপ থিমে আটকান। তাহলে এটি কবজির মতো কাজ করবে ..

<item name="android:windowDisablePreview">true</item>
<item name="android:windowIsTranslucent">true</item>

21

সবার আগে, সাদা পর্দাটি সরিয়ে ফেলতে এটি পড়ুন - https://www.bignerdranch.com/blog/splash-screens-the- right - way/

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


20

এই সমস্যাটি সমাধানের প্রস্তাবিত উপায় উত্তরগুলি অনুপস্থিত। সুতরাং আমি আমার উত্তর এখানে যুক্ত করছি। হোয়াইট-স্ক্রিন-এ-স্টার্টআপ সমস্যাটি অ্যাপটি চালু করার সময় সিস্টেম প্রসেসটি আঁকা প্রাথমিক ফাঁকা স্ক্রিনের কারণে ঘটে। এটি সমাধানের একটি সাধারণ উপায় হ'ল এটি আপনার styles.xmlফাইলে যুক্ত করে প্রাথমিক স্ক্রিনটি বন্ধ করে দেওয়া ।

<item name="android:windowDisablePreview">true</item>

তবে অ্যান্ড্রয়েড ডকুমেন্টেশন অনুসারে এটি আরম্ভের সময় হতে পারে। গুগল অনুসারে এই প্রাথমিক সাদা পর্দা এড়ানোর প্রস্তাবিত উপায় হ'ল ক্রিয়াকলাপটি ব্যবহার করাwindowBackground থিম বৈশিষ্ট্যটি ব্যবহার করা এবং শুরুর ক্রিয়াকলাপের জন্য একটি সাধারণ কাস্টম অঙ্কনযোগ্য সরবরাহ করা।

এটার মত:

অঙ্কনযোগ্য লেআউট ফাইল, my_drawable.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
  <!-- The background color, preferably the same as your normal theme -->
  <item android:drawable="@android:color/white"/>
  <!-- Your product logo - 144dp color version of your app icon -->
  <item>
    <bitmap
      android:src="@drawable/product_logo_144dp"
      android:gravity="center"/>
  </item>
</layer-list>

আপনার মধ্যে একটি নতুন শৈলী তৈরি করুন styles.xml

<!-- Base application theme. -->
<style name="AppTheme">
    <!-- Customize your theme here. -->               
</style>

<!-- Starting activity theme -->
<style name="AppTheme.Launcher">
    <item name="android:windowBackground">@drawable/my_drawable</item>
</style>

ম্যানিফেস্ট ফাইলটিতে আপনার প্রারম্ভিক ক্রিয়াকলাপে এই থিমটি যুক্ত করুন

<activity ...
android:theme="@style/AppTheme.Launcher" />

এবং আপনি কল setTheme(R.style.Apptheme)করার আগে super.onCreate()এবং আপনার স্বাভাবিক থিম কলটিতে ফিরে যেতে চাইলে এবংsetContentView()

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // Make sure this is before calling super.onCreate
    setTheme(R.style.Theme_MyApp);
    super.onCreate(savedInstanceState);
    // ...
  }
}

সমস্যাটি সমাধান করার জন্য এটিই প্রস্তাবিত উপায় এবং এটি গুগল মেটালিয়াল ডিজাইনের ধরণ থেকে।


14

আপনি সেট করার চেষ্টা করেছেন?android:windowBackground আপনার লঞ্চার ক্রিয়াকলাপের থিমের বৈশিষ্ট্যটি কোনও রঙ বা অঙ্কনযোগ্যকে ?

উদাহরণস্বরূপ:

<item name="android:windowBackground">@android:color/black</item>

লঞ্চার ক্রিয়াকলাপের থিমটিতে যুক্ত করা হলে প্রারম্ভকালে একটি কালো রঙ (সাদা রঙের চেয়ে বেশি) প্রদর্শিত হবে। আপনার ব্যবহারকারীদের কিছু দেখানোর সময় এটি দীর্ঘ সূচনাটি আড়াল করার একটি সহজ কৌশল এবং আপনি যদি অ্যাপ্লিকেশন অবজেক্টটি সাবক্লাস করেন এমনকি এটি দুর্দান্ত কাজ করে।

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


14

আমি আমার থিমগুলিতে শৈলীসমূহ। এক্সএমএলে নিম্নলিখিত দুটি লাইন যুক্ত করেছি

    <item name="android:windowDisablePreview">true</item>
    <item name="android:windowBackground">@null</item>

কবজির মতো কাজ করেছেন


10

আমার একই সমস্যা ছিল, আপনাকে আপনার স্টাইলটি আপডেট করতে হবে।

style.xml

<!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <!-- Customize your theme here. -->
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowDisablePreview">true</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:windowIsTranslucent">true</item>

 </style>

আপনার ম্যানিফেস্ট ফাইলটি নীচের মত দেখাচ্ছে।

<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
     // Other stuff
</application>

Outout:

এখানে চিত্র বর্ণনা লিখুন

আশা করি এটি আপনাকে সহায়তা করবে।


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

7

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

কোনও ক্রিয়াকলাপ শুরু করার সময় আমি বেশ কয়েকটি পৃথক পদ্ধতি ব্যবহার করার পরামর্শ দিই। এগুলি onStart()হ'ল (অ্যাপ্লিকেশনটি লোড হওয়ার পরে প্রথম জিনিস হিসাবে ডাকা হবে),onActivityCreated() হওয়ার পরে (আপনি কার্যকলাপ শুরু করার পরে যদি কোনও ডেটা প্রক্রিয়াকরণ করে থাকেন তবে লেআউটটি প্রদর্শিত হবে এবং দরকারী হবে)।

আপনার পক্ষে এটি আরও সহজ করার জন্য নীচে অফিশিয়াল ক্রিয়াকলাপ লাইফসাইकल চিত্রটি রয়েছে:

এখানে চিত্র বর্ণনা লিখুন


আপনার উত্তরের জন্য ধন্যবাদ, এটি খুব আকর্ষণীয় ছিল। তবে আমি বিশ্বাস করি আপনি আমার প্রশ্নকে ভুল বুঝেছিলেন। সমস্যাটি প্রথমটিতে আরম্ভের কারণে নয় Activity, তবে বৈশ্বিক Applicationঅবজেক্টে রয়েছে। এবং আমি বিশ্বাস করি না যে আমি উদ্বেগের এমন বিচ্ছিন্নতা সেখানে প্রয়োগ করতে পারি, কারণ Activityএটির বিপরীতে কেবল একটি onCreate()পদ্ধতি রয়েছে।
ওয়াইএস

আপনি কেন আবেদন ক্লাসটি প্রসারিত করছেন এবং ক্রিয়াকলাপটি এক নয়?
মিশেল লা ফেরলা

ঠিক আছে, সুতরাং আপনার অর্থ হ'ল আমার উচিত এই Applicationঅবজেক্টটি পুরোপুরি ছেড়ে দেওয়া উচিত এবং সমস্ত সূচনা কোডটি প্রথমটিতে স্থানান্তরিত করা উচিত Activity...
ওয়াইএস

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

2

আপনি কি এ দিকে আরম্ভ করার চেষ্টা করেছিলেন? onActivityCreated ?

ভিতরে Applicationশ্রেণি:

 registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                if(activity.getClass().equals(FirstActivity.class) {
                    // try without runOnUiThread if it will not help
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            new InitializatioTask().execute();
                        }
                    });
                }
            }

            @Override
            public void onActivityStarted(Activity activity) {

            }

            @Override
            public void onActivityResumed(Activity activity) {

            }

            @Override
            public void onActivityPaused(Activity activity) {

            }

            @Override
            public void onActivityStopped(Activity activity) {

            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {

            }
        });

2

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

অ্যাপের শুরুতে এই সাদা পর্দা রোধ করতে, একটি উপায় হল স্প্ল্যাশ স্ক্রিন, এটি চূড়ান্ত নয় কেবল একটি উপায় এবং আপনাকে অবশ্যই ব্যবহার করতে হবে।

আপনি যখন আপনার স্প্ল্যাশ.এক্সএমএল ফাইল থেকে স্প্ল্যাশ স্ক্রিন প্রদর্শন করবেন, তখনও এই সমস্যাটি একই থাকবে same

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


2

উভয় সম্পত্তি কাজ করে

    <style name="AppBaseThemeDark" parent="@style/Theme.AppCompat">
            <!--your other properties -->
            <!--<item name="android:windowDisablePreview">true</item>-->
            <item name="android:windowBackground">@null</item>
            <!--your other properties -->
    </style>

2

একবার চেষ্টা করুন।

1) একটি অঙ্কনযোগ্য ফাইল স্প্ল্যাশ_ব্যাকগ্রাউন্ড.এক্সএমএল তৈরি করুন

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

    <item android:drawable="@color/{your color}" />

    <item>
        <bitmap
            android:layout_width="@dimen/size_250"
            android:layout_height="@dimen/size_100"
            android:gravity="center"
            android:scaleType="fitXY"
            android:src="{your image}"
            android:tint="@color/colorPrimary" />
    </item>

</layer-list>

2) এটি স্টাইল.এক্সএমএল এ রাখুন

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

3) আপনার AndroidMainfest.xML এ ক্রিয়াকলাপ চালু করতে উপরের থিমটি সেট করুন।

       <activity
            android:name=".SplashScreenActivity"
            android:screenOrientation="portrait"
            android:theme="@style/SplashTheme"
            android:windowSoftInputMode="stateVisible|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

0

মান / স্টাইল.এক্সএমএলটিতে কেবল আইটেমটি লিখুন:

<item name="android:windowBackground">@android:color/black</item>

উদাহরণস্বরূপ, অ্যাপ থিমে:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>

    <item name="android:windowBackground">@android:color/black</item>

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

0
Style :- 
<style name="SplashViewTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

In Manifest :- 
<activity android:name=".SplashActivity"
        android:theme="@style/SplashViewTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

0

ডিবাগ করার সময় সেই সাদা পর্দার যে কোনও ব্যক্তির জন্য, সচেতন হন যে আপনি যদি ডিবাগিং করেন তবে এটি লোড হতে আরও বেশি সময় নেবে। আপনি যদি মুক্তির APK তৈরি করেন এবং এটি আপনার ফোনে ইনস্টল করেন তবে লক্ষ্য করবেন যে এটি লোড হতে অনেক কম লাগে।

সুতরাং ডিবাগ সংস্করণ সহ প্রারম্ভকালীন সময় প্রকাশের সংস্করণ সহ প্রারম্ভকালীন সময়ের সমান নয়।

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