You may have seen in most of the applications that a page appears for few seconds then another page is displayed. Usually the page is the name of the company(developer) which is displayed for 5-6 seconds . They are called splash screens .
If you have seen the screens below as you open any of the android applications. You may have a clear idea what we are going to do now .
These screens have mostly appeared before the app starts when you click the iconand then it disappears suddenly. That's what we are gonna make now .
What we need ?
What are we going to do ?If you have seen the screens below as you open any of the android applications. You may have a clear idea what we are going to do now .
These screens have mostly appeared before the app starts when you click the iconand then it disappears suddenly. That's what we are gonna make now .
What we need ?
- An xml layout that is the screen appearing for 5-6 seconds .(first.xml)
- A class that handles the activity of the splash screen .(First.java)
- An xml layout that displays the page after splash screen .(second.xml)
- A class that handles activity of the second page . (Second.java)
-> We are going to make an application with 2 pages. The first page will be displayed for 5 seconds and thereafter the second page will be displayed .
Step 1 : First we make the page which is going to be displayed for 5 seconds
You may copy-paste the code from below for the above page (first.xml). It is basically an ImageView in between a Relative Layout .
first.xml
<RelativeLayout 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" tools:context=".First" > <ImageView android:id="@+id/imageView1" android:layout_width="200dp" android:layout_height="200dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/ic_launcher" /> </RelativeLayout>
Step 2 : Then we have to make an Activity class for the above layout so that it is displayed for only 5 seconds . The name of our file is First.java. Just remember the Life-cycle of Android .
First.java :
package com.mia.splash; import android.os.Bundle; import android.app.Activity; import android.content.Intent; public class First extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); Thread timer = new Thread(){ public void run(){ try{ sleep(5000); }catch(InterruptedException e){ e.printStackTrace(); } finally{ Intent openSecond_page = new Intent("com.mia.splash.SECOND"); startActivity(openSecond_page); } } }; timer.start(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); finish(); } }
Step 3 : We make another layout for displaying the page after the splash screen .We name it second.xml .
The code for the layout second.xml is given below :
second.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="This is the main page of our Application" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:gravity="center" android:text="Welcome to Made In Android" android:textColor="#FF0000" android:textSize="40dp" /> </RelativeLayout>
Step 4 : The java file for the second page (Second.java) is as follows :
Second.java
package com.mia.splash; import android.app.Activity; import android.os.Bundle; public class Second extends Activity{ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); } }
Step 5 : Add the classes in AndroidManifest.xml file as shown below .
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mia.splash" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.mia.splash.First" 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="com.mia.splash.Second" android:label="@string/app_name" > <intent-filter> <action android:name="com.mia.splash.SECOND" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
Step 6 : Run the project .
The below page will be displayed for 5 seconds .
Explanation of the code :
- In the class First we call the first.xml layout (as we call the class First the layout first.xml will be displayed) .
- We define a Thread object to control the time for displaying time the page.
- You may know that run() method is important to implement when we play with Threads .
- In the run() method we sleep the execution for 5000 milliseconds(i.e. 5 seconds) .It means there will be no execution of program for 5 seconds .
- We use the try-catch block to avoid ThreadStateException .
- Then in the finally block to display the secondactivity(i.e. the next page) .
- The finally block is called even when exception is occured or not (in any case).
- The onPause() method is used to pause the execution of the super class (First class).
- The Second class is executed normally after the First class is executed .
- In the AndroidManifest.xml the class which has MAIN action is executed first then the class with DEFAULT action is executed .
Stay Tuned with Made In Android
No comments:
Post a Comment