使用overridePendingTransition时,修改被调用活动中的UI视图非常慢

时间:2015-03-28 14:40:34

标签: android android-activity android-asynctask android-animation android-transitions

几天前,我根据Action BarUpdating Action Bar Menu Item due to AsyncTask result without delay

的结果更新了AsyncTask菜单图标时出现问题

现在我意识到这个问题与AsyncTaskAction Bar完全无关。如果我想更改TextView或任何其他View

,也会出现此问题

经过一段时间的反复试验后,我意识到问题是由我在Activity中使用的overridePendingTransition引起的,后者调用了第二个Activity(我要更改图标的位置):

第一个Activity(在onItemClick方法中):

@Override
   public void onItemClick(View view, int position) {
   ...
   Intent intent = new Intent(getActivity(), SecondActivity.class);
   ...
   startActivityForResult(intent, anyValue);
   getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.no_animation);
}

动画看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
            android:duration="@android:integer/config_shortAnimTime"/>
</set>

这就是第二个Activity的AsyncTask(onPostExecute)的样子:

@Override
public void onPostExecute(String result) {
   super.onPostExecute(result);
   if (mMenu != null) {
      if (result.equals("no favorite")) {
      ...
      mMenu.findItem(R.id.action_favorite).setVisible(false);
      mMenu.findItem(R.id.action_no_favorite).setVisible(true);
   } else {
      ...
      mMenu.findItem(R.id.action_favorite).setVisible(true);
      mMenu.findItem(R.id.action_no_favorite).setVisible(false);
   }
}

如上所述,您可以使用一个TextView并根据结果设置文本,而不是在两个菜单图标之间切换 - 问题仍然存在。

你知道如何在我的第二个Activity没有这种奇怪的延迟的情况下改变动画吗?

1 个答案:

答案 0 :(得分:0)

检查 integer.xml 文件 根据需要缩小 config_shortAnimTime 的值。 它以毫秒为单位。 喜欢1000(1秒)。