Несколько макетов в одном упражнении или несколько занятий? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть сомнения по поводу макетов и действий, и главное беспокойство - эффективность приложения. Мой вопрос

Легко ли и эффективно ли использовать несколько файлов макета XML в одном действии, например в одном основном действии, и просто изменять содержимое представления различных файлов XML, например: файлы макета входа и регистрации при одном действии с использованием обработчика

OR

Различные действия, например, для страницы входа и регистрации, есть отдельные действия с соответствующими файлами макета

Какая наилучшая практика с точки зрения эффективности и простоты? Также, пожалуйста, перечислите плюсы и минусы этих подходов? И ситуации, чтобы использовать любой из этих подходов?

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Метод - 1:

См. Полный пример android.widget.ViewFlipper .С его помощью вы можете создавать различные макеты из xml, а затем переключаться между ними простым способом, подобным следующему:

ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.myViewFlipper);


  // or you can switch selecting the layout that you want to display
  viewFlipper.setDisplayedChild(1);
  viewFlipper.setDisplayedChild(viewFlipper.indexOfChild(findViewById(R.id.secondLayout)

Xml пример с двумя макетами:

      <ViewFlipper
            android:id="@+id/myViewFlipper"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:id="@+id/firstLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
               [...]
            </LinearLayout>



            <LinearLayout
                android:id="@+id/thirdLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
              [...]
            </LinearLayout>
      </ViewFlipper>

Метод - 2:

Добавьте виджет ViewSwitcher в файл макета xml.к **ViewSwitcher** добавьте 2 новых макета

viewSwitcher =   (ViewSwitcher)findViewById(R.id.viewSwitcher1);
        myFirstView= findViewById(R.id.view1);
        mySecondView = findViewById(R.id.view2);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if (viewSwitcher.getCurrentView() != myFirstView){

                    viewSwitcher.showPrevious(); 
                } else if (viewSwitcher.getCurrentView() != mySecondView){

                    viewSwitcher.showNext();
                }
            }
        });

Пример XML с двумя макетами:

<ViewSwitcher
        android:id="@+id/viewSwitcher1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:inAnimation="@android:anim/slide_in_left" >

        <LinearLayout
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/text"
            android:text="This is simplezdscsdc text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            </TextView>

        </LinearLayout>


    <LinearLayout
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/text"
            android:text="This issdsdsds simplezdscsdc text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            </TextView>

        </LinearLayout>
    </ViewSwitcher>

Примечание: - ViewFlipper лучше всего подходит для нескольких макетов в одном действии.

0 голосов
/ 18 марта 2019

Нет никаких плюсов для использования нескольких макетов XML-файлов в одном упражнении, если вы говорите о другой логике за кулисами или о чем-то в этом роде.Страница входа имеет собственное назначение, логику обработки данных, отправку данных на сервер и т. Д. И они отличаются от цели, логики, конечных точек и т. Д. На странице регистрации.

Это противоречит принципу единственной ответственности из SOLID и является неприемлемым.Я думаю, единственная ситуация, которая позволяет это, - это обучение на начальном этапе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...