2016-01-16 2 views
0

Мне было интересно, может ли кто-нибудь посоветовать, что лучший способ сделать следующее: я создаю приложение, в котором я задаю пользователю вопрос, и пользователь либо отвечает на вопрос, либо переходит к следующий вопрос с постепенным исчезновением и уменьшением анимации с использованием аниматора вместо анимации. На данный момент у меня есть одно действие, и в процессе работы я загрузил макет, который я создал в XML, а затем удаляю представление и загружаю новое представление.Android One Activity Transition Различные взгляды

Я не уверен, что это лучший способ представить несколько видов в одном действии и предотвратить необходимость использования нескольких действий. Причина, по которой я делаю это, состоит в том, что у меня есть несколько объектов, в которых я храню данные в зависимости от категории вопроса (будь то математика, наука, социальные исследования и т. Д.).

Вот картина, если она помогает визуализировать: enter image description here


Если есть лучший способ сделать это, пожалуйста, дайте мне знать. Единственная проблема, с которой я сталкиваюсь, заключается в том, что активность класса java растет в коде, потому что я должен обрабатывать все, несмотря на наличие классов объектов, определенных в других java-файлах. Спасибо.

+0

см. 'Android.transition.Scene' класс – pskink

+0

Спасибо, пскинк, я считаю, что это то, что я искал! Android Scene была создана для этой цели. Вот две ссылки, которые содержат дополнительную информацию об этом: http://developer.android.com/training/transitions/index.html https://www.youtube.com/watch?v=S3H7nJ4QaD8 – David

ответ

0

Я думаю, что вы можете построить макет, как этот RelativeLayout(see the structure) Set Layout1 андроида: видимость = "видимый" и Layout2 андроида: видимость = "невидимый" сначала в .xml

layout1 = findViewById(R.id.layout1); 
    layout1.setVisibility(View.VISIBLE); 
    layout2 = findViewById(R.id.layout2); 
    layout2.setVisibility(View.GONE); 

    Button buttonNext = (Button)findViewById(R.id.buttonNext); 
    buttonNext.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      layout1.setVisibility(View.GONE); 
      layout2.setVisibility(View.VISIBLE); 
        viewTransAnimation(); 
     } 

    }); 

и установить анимацию в viewTransAnimation(), например:

private void viewTransAnimation() { 
    layout2.setScaleX(0.1f); 
    layout2.setPivotX(layout2.getX() + layout2.getLeft()); 

    layout2.animate() 
      .scaleX(1) 
      .setDuration(500) 
      .setInterpolator(new AccelerateInterpolator()) 
      .start(); 
} 

После этого он изменится на макет2 после нажатия на него. (используйте некоторый флаг, чтобы анимация работала только один раз для вашего требования.)

Вы также можете заменить 2 вида на 2 RelativeLayout и сделать это таким же образом.

 Смежные вопросы

  • Нет связанных вопросов^_^