为什么我的一项活动的过渡不同?
Why is the transition for one of my activities different?
我正在 android 工作,这显示在我测试过的每个版本的所有设备、模拟器和物理设备上。从一个屏幕到另一个屏幕的转换都是相同的,除非您从任何地方转到主屏幕。这是片段代码。
public class NavBarFragment extends Fragment implements View.OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.nav_bar_frag, container, false);
Button homeButton = (Button) v.findViewById(R.id.homeButton);
Button vaultButton = (Button) v.findViewById(R.id.vaultButton);
Button shopButton = (Button) v.findViewById(R.id.shopButton);
Button accInfoButton = (Button) v.findViewById(R.id.accInfoButton);
homeButton.setOnClickListener(this);
vaultButton.setOnClickListener(this);
shopButton.setOnClickListener(this);
accInfoButton.setOnClickListener(this);
return v;
}
@Override
public void onClick(View v) {
Intent intent = null;
switch (v.getId()) {
case R.id.homeButton:
intent = new Intent(getActivity(), TasksScreenActivity.class);
break;
case R.id.vaultButton:
intent = new Intent(getActivity(), ChestActivity.class);
break;
case R.id.shopButton:
intent = new Intent(getActivity(), ShopActivity.class);
break;
case R.id.accInfoButton:
intent = new Intent(getActivity(), AccountActivity.class);
break;
default:
System.err.println("Error onClick in NavBarFragment");
break;
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
}
}
这是清单的相关部分
<activity android:name=".TasksScreenActivity"
android:launchMode="singleTask">
</activity>
<activity android:name=".ChestActivity"
android:launchMode="singleTask">
</activity>
<activity android:name=".ShopActivity"
android:launchMode="singleTask">
</activity>
<activity android:name=".AccountActivity"
android:launchMode="singleTask">
</activity>
据我所知,我对所有这些都做同样的事情,应该是一致的。对于所有其他屏幕,动画显示淡入,就像它弹出一样,而对于主页,它显示淡出,就像它收缩到中间然后消失。
我的问题是,它们不一致,我不在乎结束过渡是什么,只要它们都一样即可。
Intent intent = new Intent(activity, clazz);
activity.startActivity(intent);
activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
使用 overridePendingTransition 为所有新观看设置转换 activity
提供的答案是正确的,但如果您不想在 activity 过渡期间使用任何动画,也可以按照下面的方法进行操作。
Intent intent = new Intent(activity, clazz);
activity.startActivity(intent);
activity.overridePendingTransition(0, 0);
当不需要动画时,它可能会有所帮助。
您可以使用默认动画,
Intent intent = new Intent(activity, clazz);
activity.startActivity(intent);
activity.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
我正在 android 工作,这显示在我测试过的每个版本的所有设备、模拟器和物理设备上。从一个屏幕到另一个屏幕的转换都是相同的,除非您从任何地方转到主屏幕。这是片段代码。
public class NavBarFragment extends Fragment implements View.OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.nav_bar_frag, container, false);
Button homeButton = (Button) v.findViewById(R.id.homeButton);
Button vaultButton = (Button) v.findViewById(R.id.vaultButton);
Button shopButton = (Button) v.findViewById(R.id.shopButton);
Button accInfoButton = (Button) v.findViewById(R.id.accInfoButton);
homeButton.setOnClickListener(this);
vaultButton.setOnClickListener(this);
shopButton.setOnClickListener(this);
accInfoButton.setOnClickListener(this);
return v;
}
@Override
public void onClick(View v) {
Intent intent = null;
switch (v.getId()) {
case R.id.homeButton:
intent = new Intent(getActivity(), TasksScreenActivity.class);
break;
case R.id.vaultButton:
intent = new Intent(getActivity(), ChestActivity.class);
break;
case R.id.shopButton:
intent = new Intent(getActivity(), ShopActivity.class);
break;
case R.id.accInfoButton:
intent = new Intent(getActivity(), AccountActivity.class);
break;
default:
System.err.println("Error onClick in NavBarFragment");
break;
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
}
}
这是清单的相关部分
<activity android:name=".TasksScreenActivity"
android:launchMode="singleTask">
</activity>
<activity android:name=".ChestActivity"
android:launchMode="singleTask">
</activity>
<activity android:name=".ShopActivity"
android:launchMode="singleTask">
</activity>
<activity android:name=".AccountActivity"
android:launchMode="singleTask">
</activity>
据我所知,我对所有这些都做同样的事情,应该是一致的。对于所有其他屏幕,动画显示淡入,就像它弹出一样,而对于主页,它显示淡出,就像它收缩到中间然后消失。
我的问题是,它们不一致,我不在乎结束过渡是什么,只要它们都一样即可。
Intent intent = new Intent(activity, clazz);
activity.startActivity(intent);
activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
使用 overridePendingTransition 为所有新观看设置转换 activity
提供的答案是正确的,但如果您不想在 activity 过渡期间使用任何动画,也可以按照下面的方法进行操作。
Intent intent = new Intent(activity, clazz);
activity.startActivity(intent);
activity.overridePendingTransition(0, 0);
当不需要动画时,它可能会有所帮助。
您可以使用默认动画,
Intent intent = new Intent(activity, clazz);
activity.startActivity(intent);
activity.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);