автономные торговые преференции ес для украины 2014 ищем офиц инфо
Революционный Android. Ищем замену фрагментам
-
Upload
rambler-android -
Category
Technology
-
view
54 -
download
1
Transcript of Революционный Android. Ищем замену фрагментам
![Page 2: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/2.jpg)
Революционный Android Ищем замену фрагментам
Fragments API• Android 3.0 Honeycomb • 2011 год • Адаптивный UI • Backstack внутри Activity • MVC
![Page 3: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/3.jpg)
Революционный Android Ищем замену фрагментам
Fragments API
![Page 4: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/4.jpg)
Революционный Android Ищем замену фрагментам
![Page 5: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/5.jpg)
Революционный Android Ищем замену фрагментам
![Page 6: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/6.jpg)
Революционный Android Ищем замену фрагментам
Fragments API• сложный жизненный цикл (lolcycle) • асинхронные транзакции • конструирование фрагмента • вложенные фрагменты • архитектура?..
![Page 7: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/7.jpg)
Революционный Android Ищем замену фрагментам
Fragments APIчто мы создаем при создании фрагмента?<FrameLayout> <ImageView /> <TextView /> </FrameLayout>
@Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.some_view, container, null); }
![Page 8: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/8.jpg)
Революционный Android Ищем замену фрагментам
Flow & Flow.Path• Замена FragmentManager • Механизм для создания и удаления отдельных View
• Журнал для истории переходов между экранами
![Page 9: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/9.jpg)
Революционный Android Ищем замену фрагментам
Flow & Flow.Path
Flow.set(Object newScreen);
Flow.goBack();
Переход к новому экрану
Возврат на предыдущий
![Page 10: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/10.jpg)
Революционный Android Ищем замену фрагментам
Flow & Flow.Pathpublic class SampleActivity implements Flow.Dispatcher { 5
@Override public void dispatch(Traversal traversal, TraversalCallback callback) { Object newScreen = traversal.destination.top(); showNewScreen(newScreen); callback.onTraversalCompleted(); } 5
}
![Page 11: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/11.jpg)
Революционный Android Ищем замену фрагментам
Screen
public class AlbumListScreen extends Path
• объединяет View и соответствующий Presenter
![Page 12: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/12.jpg)
Революционный Android Ищем замену фрагментам
Mortar• инструмент, использующий Dagger для связывания View и Presenter
• Предоставляет каждому экрану доступ к BundleService
![Page 13: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/13.jpg)
Революционный Android Ищем замену фрагментам
Mortar & Flow
@Layout(R.layout.album_list_screen) @WithModule(AlbumListScreen.Module.class) public class AlbumListScreen extends Path {}
Объявление экрана
![Page 14: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/14.jpg)
Революционный Android Ищем замену фрагментам
Mortar & Flow
public class AlbumListScreen extends Path { 5
@dagger.Module(injects = AlbumListView.class) public static class Module { 5
@Provides List<Album> provideAlbums() {} } }
Объявление экрана
![Page 15: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/15.jpg)
Революционный Android Ищем замену фрагментам
Mortar & Flowpublic class AlbumListScreen extends Path { @Singleton public static class Presenter extends ViewPresenter<AlbumListView> { 5
@Override public void onLoad(Bundle savedInstanceState) { getView().showAlbums(albums); }
} }
Объявление экрана
![Page 16: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/16.jpg)
Революционный Android Ищем замену фрагментам
Mortar presenterpublic abstract class Presenter { void takeView(V view) void dropView(V view)
boolean hasView() V getView() void onEnterScope() void onLoad() void onSave() void onExitScope
}
![Page 17: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/17.jpg)
Революционный Android Ищем замену фрагментам
Mortar & FlowОбъявление экрана<org.sample.SomeView> <ImageView /> <TextView /> </org.sample.SomeView>
public class SomeView extends FrameLayout
![Page 18: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/18.jpg)
Революционный Android Ищем замену фрагментам
Mortar & FlowОбъявление экранаpublic class AlbumListView extends ListView { @Inject AlbumListScreen.Presenter presenter; public AlbumListView(Context context, AttributeSet attr){ super(context, attr); ObjectGraphService.inject(context, this);
} }
![Page 19: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/19.jpg)
Революционный Android Ищем замену фрагментам
Mortar & FlowОбъявление экранаpublic class AlbumListView extends ListView { 5
@Override protected void onAttachedToWindow() { super.onAttachedToWindow(); presenter.takeView(this); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); presenter.dropView(this); } }
![Page 20: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/20.jpg)
Революционный Android Ищем замену фрагментам
Mortar & FlowОбъявление экранаpublic class AlbumListView extends ListView { 5
public void showAlbums(List<Album> albums) { adapter.setAlbums(albums); adapter.notifyDataSetChanged(); } }
![Page 21: Революционный Android. Ищем замену фрагментам](https://reader034.fdocuments.net/reader034/viewer/2022051618/55c9ae1abb61eb85328b45d9/html5/thumbnails/21.jpg)
Революционный Android Ищем замену фрагментам