现在的位置: 首页 > 综合 > 正文

android in practice_Displaying splash screens with timers(MyMovies project)

2017年12月24日 ⁄ 综合 ⁄ 共 1784字 ⁄ 字号 评论关闭

You want to execute a delayed task that executes its logic only after a certain amount of time has passed.

The splash image can be dropped in the res/drawables folder:splash.png

The layout for a splash screen Activity:splash_screen.xml:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
  <ImageView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:scaleType="fitXY"
    android:src="@drawable/splash" />
</merge>

We also need to define the new Activity in the manifest file. Because it’ll be the first Activity that’s launched, it’ll take the place of the MyMovies Activity.

.........
 <activity
            android:name=".SplashScreen"
            android:label="@string/title_myMovie" 
            android:theme="@style/SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity android:name=".MyMovies" />
.........

We want the splash screen to be fullscreen, so add the following code to your styles.xml:

<style name="SplashScreen" parent="@android:style/Theme.Black">
<item name="android:windowNoTitle">true</item>
</style>

create the activity class SplashScreen

public class SplashScreen extends Activity {
	 public static final int SPLASH_TIMEOUT = 2000;

	   @Override
	   protected void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      setContentView(R.layout.splash_screen);
	      
	      new Timer().schedule(new TimerTask(){

			@Override
			public void run() {
				// TODO Auto-generated method stub
				proceed();
			}
	    	  
	      }, SPLASH_TIMEOUT);
	   }

	   public boolean onTouchEvent(MotionEvent event){
		   if(event.getAction()==MotionEvent.ACTION_DOWN){
			   proceed();
		   }
		   return super.onTouchEvent(event);
	   }
	
	   private void proceed() {
		   if(this.isFinishing()){
			   return;
		   }
		   startActivity(new Intent(SplashScreen.this,MyMovies.class));
		   finish();
	   }
}

The task itself creates an Intent to launch our landing screen (the MyMovies main Activity).

抱歉!评论已关闭.