إضافات تحسينية على درس Splash screen

أَبْدَأُ بِاسْمِ اللَّهِ مُسْتَعِينَا          رَاضٍ بِهِ مُدَبِّرًا مُعِينَا

والصلاة والسلام على نبينا محمد

اما بعد,

 

في هذا الدرس وسف يتم عمل بعض التحسينات البسيطة على الكود وعلى شاشة Splash

 

أولا سوف يتم كتابة الكود الخاص بتشغيل شاشة Splsh في فنكشن مستقل (في السابق كان مكتوب مباشرة داخل النفكشن الرئيسية) وسوف يكون نوع الفنكشن خاص (private) بمعنى أنه لايمكن استدعائها من خارج كلاس Splash كمايلي:

 

الكود قبل التعديل:

 

class SplashScreen : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)

        Timer().schedule(object : TimerTask(){
            override fun run(){
                val intent = Intent(this@SplashScreen, MainActivity::class.java)
                startActivity(intent)
                finish()
            }
        }, 2000L)

    }

}

 

 

 

بعد التعديل:

 

class SplashScreen : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash_screen)

        this.startSplashScreen();

    }

    private fun startSplashScreen(){

        Timer().schedule(object : TimerTask(){
            override fun run(){
                val intent = Intent(this@SplashScreen, MainActivity::class.java)
                startActivity(intent)
                finish()
            }
        }, 2000L)

    }

 

 

من نا حية الفرق فلا يوجد فرق في عمل الكود لكن بكتابة الكود في فنكشن مستقل يكون الكود اسهل في الكتابة واسهل في التعديل ويكتفى فقط بستدعاء اسم الفنكشن داخل الفنكشن الرئيسية بستخدام كلمة this. قبل اسم الفنكشن كما هو موضح:

 

this.startSplashScreen();

 

لكن في حالة الاستمرار في كتابة الأكواد داخل الفنكشن الرئيسية (onCreate) سوف يصعب التعامل مع الكود ويصعب قراءة ويصبح الوضع كماهو موضح في الصورة التالية:

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

في شاشة Splash يجب حذف المكان المحدد باللون الأزرق الذي يحتوي على اسم التطبيق حتى تكون الشاشة كاملة كما هو موضح في الصورة التالية:

 

للحذف افتح ملف AndroidMainifest.xml  كما هو موضح في الصورة التالية:

 

 

ثم قم بتغير السطر المحدد باللون الأحمر 

من

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

    <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=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

        </activity>
        <activity
            android:name=".SplashScreen"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_splash_screen"
            android:theme="@style/FullscreenTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

 

إلى

 

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

    <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=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

        </activity>
        <activity
            android:name=".SplashScreen"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_splash_screen"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

 

 هذا السطر يعني أنه سوف يتم عرض الصفحة بدون أكشن بار (الموجود باللون الأزرق)

android:theme="@style/Theme.AppCompat.Light.NoActionBar">

 

 

 

 

النهاية

 

 

 

المحاضر

م عبد العزيز الشمران

الكلمات الدليلية

عن الدرس

1 إعجاب
1 متابع
0 مشاركة
1489 مشاهدات
منذ 5 سنوات

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !