#c# #xamarin.forms #splash-screen
#c# #xamarin.forms #заставка
Вопрос:
Сначала я должен сказать, что я прочитал все подобные вопросы, и они не могут решить мою проблему .
У меня есть экран — заставка в моем проекте Xamarin Forms, и я проверяю учетные данные в нем, а затем в каждом условии запускаю основное действие с другим параметром по отношению к условию. Когда заставка завершит свою работу и исчезнет, приложение покажет черный экран примерно на 10 секунд, а затем отобразится главная страница
это мой Всплеск :
[Activity(Theme = "@style/MainTheme.Splash",
MainLauncher = true,
NoHistory = true,
ScreenOrientation = ScreenOrientation.Portrait)]
public class SplashActivity : Activity
{
static readonly string TAG = "X:" typeof(SplashActivity).Name;
public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
{
base.OnCreate(savedInstanceState, persistentState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
Log.Debug(TAG, "SplashActivity.OnCreate");
}
protected override void OnResume()
{
base.OnResume();
Task startupWork = new Task(() => { SimulateStartup(); });
startupWork.Start();
}
async void SimulateStartup()
{
Some Code ...
InvokeMainActivity("SomeType");
}
private void InvokeMainActivity(string type)
{
Intent _activity = new Intent(Application.Context, typeof(MainActivity));
_activity.PutExtra("Key", type);
_activity.AddFlags(ActivityFlags.NoAnimation);
StartActivity(_activity);
}
и это моя основная деятельность :
[Activity(Label = "@string/app_name",
Icon = "@drawable/icon",
Theme = "@style/MainTheme",
MainLauncher = false,
LaunchMode = LaunchMode.SingleTask,
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.Locale | ConfigChanges.LayoutDirection)
]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override async void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Xamarin.Essentials.Platform.Init(this, bundle);
Rg.Plugins.Popup.Popup.Init(this, bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
FFImageLoading.Forms.Platform.CachedImageRenderer.Init(enableFastRenderer: true);
Window.DecorView.LayoutDirection = LayoutDirection.Rtl;
string type = Intent.GetStringExtra("SomeType");
LoadApplication(new App(type));
}
}
Как я могу это исправить?
Комментарии:
1. что такое «Некоторый код …»?
2. @AlessandroCaliaro Получает данные из Rest API и SecureStorage
3. может быть, это займет какое-то время…
4. @AlessandroCaliaro Конечно, это займет некоторое время, но прежде чем сменить вид деятельности. Когда действие изменилось экран становится черным
5. Помимо затрат времени на получение данных из Rest API и SecureStorage, которые вы также добавляете
<item name="android:windowIsTranslucent">true</item>
в свой Androidstyles.xml
, у него не будет черного экрана при переключении страницы.
Ответ №1:
Благодаря @LeonLu-MSFT я добавляю этот код в style.xml без каких-либо изменений в MainActivity и Spalsh экране
<item name="android:windowIsTranslucent">true</item>
У меня нет устройств Mac и ios для тестирования в ios
Ответ №2:
Я также столкнулся с подобной проблемой. Я исправил это, добавив
<item name="android:windowIsTranslucent">true</item>
в ~ Resourcesvaluesstyles.xml .
Итак, если вы столкнулись с подобной проблемой, добавьте ее в соответствии с приведенным ниже снимком экрана, и, надеюсь, это также сработает для вас: