Правильный выбор реализации для переключения более 20 различных экранов - PullRequest
1 голос
/ 16 мая 2011

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

Характеристики моего приложения:

  • КаждыйВ сеансе будет около 10-30 экранов.
  • В целом экраны неоднородны по структуре макетов, но их можно классифицировать на 5-6 типов.
  • Ожидаемое время взаимодействия пользователя скаждый экран 10-30 секунд
  • Как только пользователь переходит на следующий экран, предыдущий больше не нужен (он никогда не возвращается)
  • Я хочу иметь хорошую анимацию скользящего перехода, когдапереходя от одного экрана к следующему

Реализации, которые я рассматриваю:

  1. Начните новый Activity для каждого экрана в стиле 'forwarding', то есть запуститеследующий экран затем закончите текущий.
  2. Загрузите все виды перед рукой и используйте ViewAnimator

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

Большое спасибо.

1 Ответ

0 голосов
/ 17 мая 2011

ОК, вот что я сделал.Оказалось, я вручную установил анимацию

onCreate() {
    mAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_in_right);
    mViewPool = new View[] { /* A few views for re-using, each of different type */ };
}

proceed() {
    nextView = getView(type);
    mFrame.removeAllChilds();
    mFrame.addView(nextView);
    nextView.startAnimation(mAnimation);
}

getView(int type) {
    View view = mViewPool[type];
    // reset some subviews if neccessary
    return view;
}

, где mFrame - это то, что вы считаете подходящей ViewGroup, а не обязательно ViewAnimator.У меня получилось ScrollView.

Если вы видите потенциальную проблему с этим подходом, пожалуйста, дайте мне знать.Большое спасибо.

...