splash screen در اندروید

منتشرشده توسط حامد قنبری در تاریخ

اندروید اسپلش اسکرین بطور معمول قبل از لود کامل اپلکیشن، برای نشان دادن لوگو یا تبلیغات مرتبط با توسعه دهندگان استفاده می شود. در این آموزش ما نحوه استفاده از این روش را برای دوستان آموزش می دهیم. مزیت استفاده از این امکان ، به زیبایی هرچه بیشتر اپلیکیشن ما کمک خواهد کرد.

در این آموزش نحوه استفاده از اسپلش اسکرین را در دو سناریو متعدد برای شما توضیح خواهیم داد. یکی نشان دادن صفحه نمایش  با استفاده از یک تایمر و دوم نشان دادن صفحه نمایش در هنگام نوعی عملیات واکنشی همچون اتصالات شبکه ای برای دریافت اطلاعات است که مدت زمان هر چند کوتاهی ، کاربر را در حالت انتظار می گذارد.

روش اول استفاده از کلاس handler است که با استفاده از Intent در مدت زمان مشخصی از یک اکتیویتی به اکتیویتی دیگر می پرد . در این روش ما از متدی بنام postdelayed استفاده می کنیم که امکان تاخیر زمانی در اجرای این عملیات را برای ما فراهم می سازد. که در این مثال این تاخیر زمانی 4 ثانیه است.

public class Splash extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);


                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        startActivity(new Intent(Splash.this,Home.class));
                        finish();
                    }
                },4000);

            }

        }

روش دوم : از این روش زمانی استفاده می شود که با توجه به ضرورت وجود اطلاعات در اکتیویتی اصلی و زمانبر بودن فراخوانی اطلاعات از سرور،  و نیز با عنایت به اینکه تاخیر زمانی در اجرای اولین اکتیویتی اصلی امری غیر معمول می نماید. از این رو اسپلش اسکرین می تواند گزینه مناسبی برای این تاخیر زمانی باشد. برای مثال در پروژه ای با توجه به اهمیت به روزرسانی، در اکتیویتی اصلی یا همان main Activity ،  اطلاعات خاصی از سرور فراخوانی شده و به کاربر نشان داده شود.

مثلاْ فرض کنید پروژه ای داریم که برای شروع کار اپلیکیشن ضروری است ابتدا کاربر اطلاعات یا محتوای مرتبط با اپلیکیشن همانند اخبار را از url  مشخصی به روش جیسون دریافت کند و اگر دسترسی به محتوا برای اپلیکیشن فراهم شد صفحه بصورت اتوماتیک به صفحه بعدی انتقال می یابد. اصولاْ در این روش ابتدا با نشان دادن progress bar   و پیام انتظار کاربر را دعوت به صبوری می کند و بعد از چندین ثانیه و به محض دریافت اطلاعات کاربر را به صفحه بعد راهنمایی می کند. به منظور پیاده سازی روش مذکور می توان از AsyncTaskاستفاده کرد که به منظور یادگیری این روش می توانید از لینک زیر استفاده کنید

 

مثال:

پروژه جدیدی را در اندروید استودیو یا اکلیپس ایجاد کنید

   اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

 نام اکتیویتی ابتدایی و اصلی خود  را MainActivity بگذارید.

 کلاس جدیدی را از پکیج اصلی  به پروژه اضافه کنید و نام آن را SplashScreen بگذارید.(روی پکیج اصلی راست کلیک کرده و از منوی new گزینه java  را انتخاب کنید و در پنجره ظاهر شده نام آن را SplashScreen بگذارید).

به دنبال ایجاد کلاس جدید SplashScreen، از مسیر res ⇒ layout لایوت جدیدی را ایجاد کرده و نام آن را Splash_Activity بگذارید. البته در کنار لایوت ایجاد شده لایوت دیگری به نام activity_main وجود دارد که لایوت اکتیویتی اصلی یا همان MainActivity است.

در مسیر res ⇒ layout لایوت splash_activity را باز کرده و کدهای Xml آن را بدین صورت می نویسیم:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id= "@+id/image"/>

</LinearLayout>

در پکیج اصلی پروژه، کلاس SplashScreen را باز کرده و کدهای زیر را در آن می نویسیم:

package ir.site.psrd.splashscreen;

 /** * Created by h.ghanbari on 28/12/2017. */ 

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;

/**
 * Created by psrd on 06/01/2017.
 */
public class SplashScreen extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_activity);
        ImageView image = (ImageView)findViewById(R.id.image);
        image.setImageResource(R.drawable.splash);
        splash();

    }

    public void splash (){

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashScreen.this,MainActivity.class));
                finish();
            }
        },4000);

    }
    }

در نهایت AndroidManifest.xml را باز نموده و ضمن اضافه کردن اکتیویتی splashscreen به مانیفیست ، خصوصیات کدهای مربوط به  <intent-filter> را از تگ MainActivity ، را Cut کرده و در داخل تگ مربوط به اکتیویتی SplashScreen  می گذاریم. مهم است بدانید کدهای <intent-filter>  به منزله شروع پروژه با همان اکتیویتی خواهد بود. در نهایت کدها بصورت زیر خواهد بود

 

حال می توانید پروژه خود را اجرا کرده و نتیجه کار خود را ببینید. اگر در خصوص اجرای برنامه مشکلی داشتید یا بنده حقیر در آموزش خود دچار اشتباهی شده ام بسیار خرسند خواهم شد که عرایض شما  را از طریق دیدگاهها

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">

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

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

        </activity>
    </application>

</manifest>



0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --