2016-03-22 6 views
3

Я создал небольшие мобильные приложения с помощью Gluon Mobile и теперь в бета-тестировании через Google Play. , но я понял, что время начала моих мобильных приложений на Android-устройстве довольно медленное (занимает около 10 секунд).gluon android splash screen

Было бы здорово, если бы я мог добавить SplashScreen перед загрузкой приложений, поэтому пользователь не будет ждать в общей сложности 10 раз, но они чувствуют только половину этого, потому что они получили ответ от приложений, увидев SplashScreen.

на родной андроида развития, мы просто построить 2 активности (один для SplashScreen и один основные приложения), как удар:

<activity 
android:name=”.SplashScreen”> 
<intent-filter> 
<action android:name=”android.intent.action.MAIN” /> 
<category android:name=”android.intent.category.LAUNCHER” /> 
</intent-filter> 
</activity> 
<activity 
android:name=”.MainActivity” 
android:label=”@string/app_name” 
> 
<intent-filter> 
<action android:name=”android.intent.action.MAIN” /> 
</intent-filter> 
</activity> 

мой вопрос, есть ли подход, чтобы показать SplashScreen, что строить на JavaFX/ГЛЮОНА которые будут выполняться как на ororid/ios, так и на native. Есть ли недостатки, если мы построим на javaFX, а не этот родной подход.

С юного возраста глюона/javaFX на мобильном телефоне нелегко добиться оптимальной практики. пожалуйста, ан-осветит мне

rgrds

ответ

1

Хотя экран Всплеск может быть хорошей идеей, на самом деле Gluon Mobile Multi-View проекты, созданные с глюонной плагин позволит вам создать подобный эффект с помощью Home View, как заполнитель для изображения или любого другого легкого содержимого, которое вы хотите отобразить, при этом все тяжелые вещи загружаются во вторичный вид.

По умолчанию Home View - это начальное представление, которое загружается во время метода Application.start(). Другие представления не будут загружены до тех пор, пока пользователь не переключится на них.

С следующей точки зрения, только тогда, когда пользователь нажимает на кнопку плавучего действий, фактическая нагрузка тяжелого материала начинается, но вид заставки на устройстве мобил отображается в кратчайшие сроки:

public class SplashView extends View { 

    public SplashView(String name) { 
     super(name); 

     setCenter(new ImageView(new Image(getClass().getResourceAsStream("splash.png")))); 

     FloatingActionButton action = new FloatingActionButton(MaterialDesignIcon.ARROW_FORWARD.text, e -> 
       MobileApplication.getInstance().switchView(GluonSplash.SECONDARY_VIEW)); 
     getLayers().add(action); 
    } 

    @Override 
    protected void updateAppBar(AppBar appBar) { 
     appBar.setVisible(false); 
    } 

} 

Чтобы избежать необходимости вмешательства пользователя, вы можете избавиться от кнопки действия и начать загрузку второго представления через определенное время отображения всплеска.

В этом другом примере, после показа всплеска, начинается переход паузы. Через одну секунду он отображает метку, указывающую, что будет загружен новый вид. В то же время запускается задача загрузки этого представления. Когда будет загружен весь вид тяжеловеса, он будет показан.

public class SplashView extends View { 

    public SplashView(String name) { 
     super(name); 

     Label access = new Label("Accessing..."); 
     access.setTranslateY(200); 
     access.setVisible(false); 
     setCenter(new StackPane(new ImageView(new Image(getClass().getResourceAsStream("splash.png"))), 
          access)); 

     Task<Void> task = new Task<Void>() { 

      @Override 
      protected Void call() throws Exception { 
       Platform.runLater(() -> MobileApplication.getInstance().switchView(GluonSplash.SECONDARY_VIEW)); 
       return null; 
      } 
     }; 

     addEventHandler(LifecycleEvent.SHOWN, e -> { 
      PauseTransition pause = new PauseTransition(Duration.seconds(1)); 
      pause.setOnFinished(f -> { 
       access.setVisible(true); 
       new Thread(task).start(); 
      }); 
      pause.play(); 
     }); 

    } 

    @Override 
    protected void updateAppBar(AppBar appBar) { 
     appBar.setVisible(false); 
    } 

} 
+0

На самом деле, я хочу удалить пустой черный экран с самого начала другим контентом/светом. но я проверю, будет ли этот подход не только за несколько секунд до того, как приложения будут показаны, а пустой черный экран останется на большей части времени загрузки. надеюсь, вы поняли мою точку зрения. – Wijaya

+0

Точно, идея заключается в использовании очень легкого Home_View, который будет отображаться немедленно. Для этого попробуйте загрузить все, что связано со вторым представлением, только тогда, когда требуется это представление. В противном случае время загрузки повлияет на представление Home/Splash, а также –

+0

Да, этот подход работает отлично. единственная проблема, с которой я столкнулся, - это когда пользовательская кнопка возврата на андроиде может перейти на загрузку заставки. Я могу избежать возврата из панели приложений, но все еще не работает для кнопки «Назад» из аппаратного обеспечения Android (в правом нижнем углу). любое предложение/трюк, чтобы преодолеть это? заранее спасибо. – Wijaya

1

Я немного поздно, но и для будущих проектов это может быть полезно:

Существует проект на Github, что расширяет функциональные возможности глюонов.
https://github.com/Ciruman/QuarkFX
Она включает в себя:

  • Различный подход к Просмотру обработки которым позволяет разрабатывать приложения для различных размеров устройств и ориентаций
  • Существует также Splash Screen включен (Это еще не настраивается, но так как оно это с открытым исходным кодом, вы можете быстро его изменить в соответствии с вашими потребностями)
  • дополнительные функции checkout its readme
+0

Это с открытым исходным кодом? @LucaZ –