Сотовый Gmail как приложение - PullRequest
6 голосов
/ 22 октября 2011

Кто-нибудь знает (или может показать мне пример), как я могу разработать приложение, которое ведет себя так же, как сотовый Gmail? Как я могу переключаться между макетами кадров и изменять их размеры для отображения содержимого. например, когда вы нажимаете на свое сообщение, а затем фрагмент перемещается влево, чтобы освободить место для сообщения, и сам фрагмент, содержащий вас, исчезает.

1 Ответ

6 голосов
/ 22 октября 2011

Думаю, вам все это грустно :) Предоставьте компоновку для ваших компонентов, я бы предложил LinearLayout с горизонтальной ориентацией.Затем вы добавляете в него все три фрагмента и скрываете третий, содержащий Сообщение.

FolderListFragment folderListFragment = new FolderListFragment();
MessageListFragment messageListFragment = new MessageListFragment();
MessageFragment messageFragment = new MessageFragment();

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(container_view_layout, folderListFragment);
ft.add(container_view_layout, messageListFragment);
ft.add(container_view_layout, messageFragment);
ft.hide(messageFragment);
ft.commit();

Затем, когда вы хотите показать фрагмент сообщения:

void showMessage(Message message) {
   // Initialize messageFragment
   messageFragment.setMessage(message);
   FragmentTransaction ft = getFragmentManager().beginTransaction();
   ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
   ft.hide(folderListFragment);
   ft.show(messageFragment);
   ft.commit();
}

void showFolders() {
   FragmentTransaction ft = getFragmentManager().beginTransaction();
   ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
   ft.hide(folderListFragment);
   ft.show(messageFragment);
   ft.commit();
}

И дляДля анимации слайд-слайда для фрагмента папки вы можете получить другие (400 - ширина компонента):

<set>
   <objectAnimator
      android:propertyName="x"
      android:duration="500"
      android:valueFrom="-400"
      android:valueTo="0"
      android:valueType="intType"/>
</set>
...