Başlangıçta 2 saniye beyaz ekran görüntüleyen bir android uygulamam var. Diğer uygulamalarım bunu yapmıyor ama bu yapıyor. Bunu düzeltmesi umuduyla bir açılış ekranı da uyguladım. Açılış ekranı uyku süremi artırmalı mıyım? Teşekkürler.
Başlangıçta 2 saniye beyaz ekran görüntüleyen bir android uygulamam var. Diğer uygulamalarım bunu yapmıyor ama bu yapıyor. Bunu düzeltmesi umuduyla bir açılış ekranı da uyguladım. Açılış ekranı uyku süremi artırmalı mıyım? Teşekkürler.
Yanıtlar:
AndroidManifest.xml dosyasındaki başlangıç etkinliğine şeffaf temayı söylemeniz yeterli.
Sevmek:
<activity
android:name="first Activity Name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
ve bu ekranı yerine Activity
sınıfla genişletin AppCompatActivity
.
sevmek :
public class SplashScreenActivity extends Activity{
----YOUR CODE GOES HERE----
}
final ActionBar actionBar = getActionBar();
Tema yarı saydam olduğunda kullanmak boş döndürür
Bunu özel bir stile koyun ve tüm sorunları çözer. Keskin yarı saydam düzeltmeyi kullanmak, görev çubuğunuzu ve gezinme çubuğunuzu yarı saydam hale getirecek ve açılış ekranını veya ana ekranı spagetti gibi gösterecektir.
<item name="android:windowDisablePreview">true</item>
Tıpkı tüp gibi .. başlangıçta beyaz ekran yerine simge ekranını gösterirler. Ve 2 saniye sonra ana ekranı gösterir.
ilk olarak res / drawable'da bir XML çekilebilir oluşturun.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
Ardından, bunu temadaki açılış etkinliğinizin arka planı olarak ayarlayacaksınız. Styles.xml dosyanıza gidin ve açılış etkinliğiniz için yeni bir tema ekleyin
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
Yeni SplashTheme programınızda pencere arka plan özniteliğini XML çekilebilirinize ayarlayın. Bunu AndroidManifest.xml'nizde sıçrama etkinliğinizin teması olarak yapılandırın:
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Bu bağlantı istediğinizi verir. adım adım prosedür. https://www.bignerdranch.com/blog/splash-screens-the-right-way/
GÜNCELLEME:
Bunun layer-list
gibi daha da basit olabilir ( <bitmap>
etiketin aksine ortalanmış logo için vektör çizimlerini de kabul eder ):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Background color -->
<item android:drawable="@color/gray"/>
<!-- Logo at the center of the screen -->
<item
android:drawable="@mipmap/ic_launcher"
android:gravity="center"/>
</layer-list>
mipmap/ic_launcher
layer-list
şu olabilir: <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Background color --> <item android:drawable="@color/white"/> <!-- Logo at the center of the screen --> <item android:drawable="@mipmap/ic_launcher" android:gravity="center"/> </layer-list>
Style.xml dosyanızda aşağıdaki gibi bir stil oluşturun:
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
ve AndroidManifest'teki etkinliğinizle birlikte kullanın:
<activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent">
Cyril Mottier tarafından yazılan bu harika gönderiyi okumalısınız: Android Uygulama lansmanı muhteşem hale geldi
Eğer özelleştirmek için gereken Theme
de özelleştirmek için style.xml ve kaçınmak içinonCreate
ActionBar.setIcon olarak / setTitle / vb.
Ayrıca Google'ın Performans İpuçları ile ilgili Dokümantasyona bakın .
Görünümlerinizi görüntülemek için zamanı görmek için Trace View
ve kullanın Hierarchy Viewer
: Android'de Android Performans Optimizasyonu / Performans Ayarlaması
AsyncTask
Bazı görünümleri görüntülemek için kullanın .
Örnek bir uygulamadaki AppTheme'im:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Gördüğünüz gibi, varsayılan renklere sahibim ve sonra ekledim android:windowIsTranslucent
vetrue
.
Bir Android Geliştirici olarak bildiğim kadarıyla, uygulamanın başlangıcında beyaz ekranı gizlemek için ayarlamanız gereken tek şey bu.
Her iki özellik de çalışır , bunlardan herhangi birini kullanır.
<style name="AppBaseThemeDark" parent="@style/Theme.AppCompat">
<!--your other properties -->
<!--<item name="android:windowDisablePreview">true</item>-->
<item name="android:windowBackground">@null</item>
<!--your other properties -->
</style>
User543 cevap mükemmeldir
<activity
android:name="first Activity Name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Fakat:
You'r BAŞLATICISI Etkinliği extands gerekir Aktivite değil AppCompatActivity varsayılan olarak geldi!
Beyaz arka plan Apptheme'den geliyor Beyaz ekran yerine uygulama logonuz gibi faydalı bir şey gösterebilirsiniz. Bu özel tema kullanılarak yapılabilir. Uygulamanızda Tema sadece ekleyin
android:windowBackground=""
özniteliği. Öznitelik değeri bir resim veya katmanlı liste veya herhangi bir renk olabilir.
<item name="android:windowBackground">@android:color/transparent</item>
Açılış ekranının nasıl tasarlanacağını gösteren bağlantı aşağıdadır. Beyaz / siyah arka plandan kaçınmak için, splash arka planlı bir tema tanımlamamız ve bu temayı manifest dosyasında sıçrayacak şekilde ayarlamamız gerekir.
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
res / drawable klasörünün içinde splash_background.xml
<?xml version=”1.0" encoding=”utf-8"?>
<layer-list xmlns:android=”http://schemas.android.com/apk/res/android">
<item android:drawable=”@color/colorPrimary” />
<item>
<bitmap
android:gravity=”center”
android:src=”@mipmap/ic_launcher” />
</item>
</layer-list>
Aşağıdaki stilleri ekleyin
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- Splash Screen theme. -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
Manifest'te temayı aşağıda gösterildiği gibi ayarlayın
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Bir projemde de aynı sorunu yaşadım. Açılış ekranına sağlanan temaya aşağıdaki parametreleri ekleyerek çözdüm.
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
Sebebini ve çözümünü benim yazdığım bu blog yazısında bulabilirsiniz . Umarım yardımcı olur.
Bildiriminizdeki temayı şu şekilde ayarlayarak düzeltilebilir:
<activity
android:name=".MySplashActivityName"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
ve bundan sonra
java.lang.IllegalStateException alıyorsanız : Bu etkinlikle bir Theme.AppCompat teması (veya alt öğesi) kullanmanız gerekir. AppCompatActivity yerine Activity'i
genişletmeniz gerekebilir sizin MySplashActivity içinde.
Umarım yardımcı olur!
Anında Çalıştır android stüdyo ayarlarını devre dışı bırakmalısınız.
Dosya> Ayarlar> Oluşturma, Yürütme, Dağıtım> Anında Çalıştırma Burada gösterilen tüm seçeneklerin işaretini kaldırın.
Not: Anında Çalıştırma nedeniyle oluşan beyaz ekran Sorunu yalnızca Hata Ayıklama yapıları içindir, bu Sorun sürüm sürümlerinde görünmeyecektir.
Aşağıdaki kodu deneyin:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
Bu kod benim için çalışıyor ve tüm Android cihazlarda çalışacak.
Çözümü Çok Basit!
Bu sorunun Üç Temel Nedeni vardır
Çözümler:
1.Çözüm:
Remove the Heavy Task from onCreateView() function and place it some where appropriate place.
2.Çözüm:
Reduce the Thread Sleep time.
3. Çözüm:
Remove the Third party library at app initialize at implement them with some good strategy.
Benim durumumda bu soruna yol açan Şeker ORM kullanıyorum.
İyileştirmek için paylaşın.
Bu sorunu çözdü:
Aşağıdaki kodu yapıştırın:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
Ve AndroidManifest.xml dosyasında değişiklikleri yapmayı unutmayın . ( temanın adı )
Bu dosyadaki faaliyetlerin beyan sırasına dikkat edin.
I encountered a similar problem and to overcome it, I implemented the code below in styles, i.e res->values->styles->resource tag
<item name="android:windowDisablePreview">true</item>
Here is the whole code:
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowDisablePreview">true</item>
</style>
onCreate
rolünü yerine getirmesi çok uzun sürüyor . Bu aktivitede sadece "setContentView" yapmayı deneyin ve bu gecikmenin geçip geçmediğini kontrol edin.