【问题标题】:Right implementation choice for switching 20+ different screens切换 20 多个不同屏幕的正确实施选择
【发布时间】:2011-08-26 06:42:59
【问题描述】:

我正在制作一个类似于测验的游戏,用户在允许他们进入下一个问题之前回答每个问题。

我的应用的特点:

  • 每个会话将有 大约 10-30 个屏幕。
  • 一般来说,屏幕在布局上是异构的 结构,但它们可以是 分为 5-6 种。
  • 用户与每个屏幕交互的预期时间是 10-30 秒
  • 一旦用户进入下一个屏幕, 不需要上一个 不再(他永远不会回去)
  • 我想要一个漂亮的滑动 离开时的过渡动画 一屏到下一屏

我正在考虑的实现:

  1. 为每个人创建一个新的Activity “转发”风格的屏幕, 即开始下一个屏幕然后 完成当前任务。
  2. 预先加载所有视图并 使用ViewAnimator

看起来我目前的解决方案都不好。您能帮我找到一个在内存消耗、电池消耗和响应能力方面都不错的解决方案吗?

非常感谢。

【问题讨论】:

  • ViewAnimator 有什么问题?
  • 当我重复使用相同的视图并更改内容时,如何获取动画?如果我不重复使用屏幕,内存消耗可能太大。我可能需要保留 20 多个屏幕。

标签: android performance user-interface implementation


【解决方案1】:

好的,下面是我所做的。原来我手动设置了动画

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

如果您发现此方法有任何潜在问题,请告诉我。非常感谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多