بسم الله الرحمن الرحيم
شاشة SplashScreen وهي الشاشة المؤقتة التي تظهر في بداية تشغيل التطبيق, كثير من المبرمجين لم ينصح بها, احياناً لها آثر في بطء التطبيق كما أنها تأخذ مساحة وحجم للصورة التي تضعها, من جهة آخرى لها فوائد كثيرة, مثلاً عرض اعلان مؤقت, شريط معالجة تحميل التطبيق, تحميل بيانات من الانترنت الى التطبيق.
طريقة وضعها وبرمجتها جداً سهلة, وتزداد صعوبة على حسب الخصائص والمميزات التي تريدها أن تكون موجودة فيها.
برمجتها تدور حول دالة تسمى بـ Thread وهو تنفيذ عدة مهام في وقت واحد ومتوازن, وفي الغالب يكون خفيف جداً على الذاكرة. ( مهم جداً في الجافا يمكنك مراجعته من هنا )
الخصائص التي سوف يحتويها الدرس :
– انشاء صورة من نفس الاكتفتي دون وجود layout-xml.
– اخفاء شريط الاكشن بار.
– توقف عمل التطبيق لمدة معينة وهو الوقت المنتظر ليتم نقلنا الى الصفحة الرئيسية.
الثريد ( Thread ) له أسلوبين في الكتابة, ولكن في الجافا يوجد الكثير من الطرق للتعامل مع أي كائن حسب حاجتك, لذلك سوف أعرض عليكم النموذجين مختلفة قليلاً واستخدم التي تريد أو عدل بالنموذج الذي تريد.
في البداية قم بإنشاء اكتفتي جديد وقم بتسميته SplashScreen و أذهب إلى ملف AndroidManifest.xml وقم بتعين السبلاش سكرين الشاشة الرئيسية لتطبيقك.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.andrody.first_app" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/CustomActionBarTheme"> <activity android:name=".SplashScreen" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" /> </application> </manifest>
+ اختياري / إذا كنت تريد عمل شاشة بخصائص ومميزات وصور ونصوص إلخ .. أذهب إلى مجلد Layout و أنشا ملف داخله بإسم activity_splash.xml . في هذه اللياوت ضع ما تريد.
الآن نأتي الى الجزء البرمجي java /
اذا أردت اخفاء شريط التايتل ( العنوان ) الاكشن البار العلوي :
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
اذا أردت استخدام صورة فقط في المقدمة ( اذا لا حاجة لملف لياوت ) :
// انشاء صورة جديدة بإسم image // تغيير هذه الصورة إلى الصورة الموضحة بالمسار التالي // عرض الصورة ImageView image = new ImageView(this); image.setImageResource(R.drawable.splashscreen1); setContentView(image);
اذا أردت ربط السبلاش بـ ملف لياوت ( بالتالي ليس هناك حاجة لكود الصورة ) :
setContentView(R.layout.activity_splash);
الآن سوف أعرض النماذج مع سطور التعليقات ويجب عليك لوحدك فهمها لكي تعرف كيفية التعامل معها ..
1. SplashScreen.java
public class SplashScreen extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // احذف اشارة // من السطر في الأسفل لتمكينه .. إذا اردت أن يتصل مع واجهة لياوت //setContentView(R.layout.activity_splash); requestWindowFeature(Window.FEATURE_NO_TITLE); // اخفاء الاكشن بار ImageView image = new ImageView(this); // انشاء صورة جديدة image.setImageResource(R.drawable.splashscreen1); // مسار الصورة التي يتم عرضها في بداية تشغيل التطبيق setContentView(image); // اعرض الصورة /****** انشاء ثريد لجعل التطبيق ينام لمدة 5 ثواني *************/ Thread background = new Thread() { public void run() { try { sleep(5 * 1000); // غير في الرقم 5 لتغيير عدد الثواني .. ثواني الانتظار قبل الدخول للتطبيق // بعد 5 ثواني نفذ التالي وهو الانتقال بنا الى الشاشة الرئيسية Intent i = new Intent(getBaseContext(), MainActivity.class); startActivity(i); // اغلاق شاشة السبلاش بشكل كلشي بعد الانتقال finish(); } catch (Exception e) { } } }; // تشغيل الثريد السابق background.start(); }}
2. SplashScreen.java
public class SplashScreen extends Activity { private static final int SPLASH_DURATION = 2000; // الوقت المحدد للانتظار في السبلاش = 2000 = ثانتين @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // احذف اشارة // من السطر في الأسفل لتمكينه .. إذا اردت أن يتصل مع واجهة لياوت //setContentView(R.layout.activity_main); requestWindowFeature(Window.FEATURE_NO_TITLE); // اخفاء الاكشن بار ImageView image = new ImageView(this); // انشاء صورة جديدة image.setImageResource(R.drawable.splashscreen1); // مسار الصورة التي يتم عرضها في بداية تشغيل التطبيق setContentView(image); // اعرض الصورة Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // الانتقال الى الشاشة الرئيسية للتطبيق Intent intent = new Intent(SplashScreen.this, MainActivity.class); SplashScreen.this.startActivity(intent); finish(); } }, SPLASH_DURATION); // الوقت من المعرف في الاعلى }}
لا تنسى استبدال splashscreen1 بإسم الصورة لديك.
يمكنك البحث أكثر في الانترنت لمزيد من المعلومات .. الأمر جداً بسيط وممتع بعض الشيء في تزويد تطبيقك بإضافات جديدة وجميلة.
انتظرونا بكل جديد ومفيد وحصري .. والسلام عليكم 🙂
الله يجزيك الخير
شرح وافي وباسلوب راقي جداااا
متابعك اول باول ومستفيد منك كثييييييير
الى الامام يا صديقي
آمين يا رب جميعاً .
تشرفت بك صديقي 🙂
يعطيك العافية متابع معك في كثير من الدروس واستفدت الله يوفقك بالنسبة لهذا الدرس اريد ان اسال اش الفرق بين الطريقتين في كلاس splashscreen
لا يوجد فرق واضح .. اعتقد انه يخص الذاكرة والتحميل .. لأن الاول ثريد .. والثاني هاندلر وهو جزء من الثريد ..
الله يعطيك ألف عافية يا رب أنا أفتخر بوجود شباب مثلك مندفعين للعلم أريد أن أسأل حول كيفية جعل ال splash screen تحوي مؤثرات حركية مثل برنامج منقول من قلب سورية وأتمنى تعليمي الطريقة
الله يجزيك كل خير ويحفظك وجميع اهلك والمسلمين
صراحة جهد متعوب عليه تستاهل الف شكر
وانا استفدت كثير من دروسك