Так получилось, что при разработке нового приложения, пришлось реализовать такую штуку. При загрузке приложения необходимо было показывать не чёрный экран с заголовком, как у большинства приложений, а выводить на экран некое изображение, называют его Splash screen. Погуглив и собрав воедино знания людей получилась весьма неплохая штука, и так приступим:
- Создадим в нашем приложении новый класс SplashScreen. Переменная _splashTime задаёт дополнительное время ожидания после загрузки приложения, после чего будет запущено новое activity - MainActivity.
public class SplashScreen extends Activity { //how long until we go to the next activity protected int _splashTime = 1000; private Thread splashTread; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash); final SplashScreen sPlashScreen = this; // thread for displaying the SplashScreen splashTread = new Thread() { @Override public void run() { try { synchronized(this){ //wait 5 sec wait(_splashTime); } } catch(InterruptedException e) {} finally { finish(); //start a new activity Intent i = new Intent(); i.setClass(sPlashScreen, MainActivity.class); startActivity(i); finish(); } } }; splashTread.start(); } //Function that will handle the touch @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { synchronized(splashTread){ splashTread.notifyAll(); } } return true; } }
- Пропише в файле AndroidManifest.xml новое activity и сделаем его запуск при старте приложения:
<activity android:name=".SplashScreen" android:theme="@style/Theme.Splash"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> <intent-filter> <activity>
- При вставке, сразу же наша IDE начнёт ругаться на несуществующую тему Theme.Splash, поэтому создадим её в стилях values/styles.xml. В стилях отключаем отображаемый заголовок и устанавливаем фон activity:
<resources> <style name="Theme.Splash" parent="android:Theme"> <item name="android:windowBackground">@drawable/main</item> <item name="android:windowNoTitle">true</item> </style> </resources>
На этом всё, пробуем запустить наше приложение и радуемся красивой заставке.
P.Nixx, 01.10.2012, 11:02