我想禁用在我的Android应用中启动新活动时发生的所有动画(适用于所有活动)。有没有办法一劳永逸地实现这一目标?或者我应该去每个活动并使用Intent.FLAG_ACTIVITY_NO_ANIMATION或overridePendingTransition或两者兼而有之?
答案 0 :(得分:2)
如果您愿意,可以使用样式:
String location = "/abc/def/ghfj/ijk/lmn.doc";
Path p = Paths.get(location);
String parent = p.getName(1).getFileName().toString();
System.out.println(parent);// Output: def
并根据您的活动设置它们:
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
如果那就是你的意思,请告诉我......
归功于@Santosh https://stackoverflow.com/a/9312957/3180983
当我构建我的应用程序时,我只使用了一个活动。在活动上有4个自定义视图。每个自定义视图代表另一个“活动”,它不是真正的活动......我正在玩几个自定义视图,所以每个都是另一个窗口......
以下是带动画的代码(***如果您不希望动画将此代码跳到下面的 <activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
下方。):
goToRegistrationPage()
这是没有动画的代码(这就是你需要的):
//This code change the view so that the register form will appear. instead of changing activity with animation.
public void goToRegistrationPage()
{
Animation animationRightX1 = AnimationUtils.loadAnimation(this, R.anim.translate_right_x1);
//animationRightX1.
Animation animationRightX2 = AnimationUtils.loadAnimation(this, R.anim.translate_right_x2);
Animation animationRightX3 = AnimationUtils.loadAnimation(this, R.anim.translate_right_x3);
final int width = this.getWindowManager().getDefaultDisplay().getWidth();
layout.MainView.setVisibility(View.GONE);
layout.MainLogin.startAnimation(animationRightX1);
layout.MainRegister.startAnimation(animationRightX1);
animationRightX1.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
layout.layoutScroll.scrollTo((width*2), 0);
layout.MainView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
所以基本上你在这里做的是滚动宽度为像素的窗口。
//This code change the view so that the register form will appear. instead of changing activity
//Go to the registration form from the main view.
public void goToRegistrationPageFromMainView()
{
final int width = this.getWindowManager().getDefaultDisplay().getWidth();
layout.layoutScroll.scrollTo((width*2), 0); // its width*2 because there is the "some other view" so it need to go 2 times width to the right side...
}
是图片中的粉红色。
layoutscroll
是我创建的用于存储所有布局的类...您可以执行的个人偏好layout
。