无法启动 activity 动画 android/java
can't start activity with animation android/java
第一个activity的动画在我用startActivity
的时候没有效果,不知道有什么奇怪的。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
ImageView img = (ImageView) findViewById(R.id.splash);
img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000);
Intent intent = new Intent(getApplicationContext(), NextActivity.class);
startActivity(intent);
}
}
我希望您尝试显示您的 APP 徽标的缩放和旋转动画一段时间,然后尝试启动另一个 Activity。
由于您正在启动另一个 activity ,在 Imageview 上启动动画之前,ActivityManager 将切换到下一个动画,因此您看不到动画,
解决方案是将 Animationlistner 设置为提供给 ImageView 的 ViewPropertyAnimator 对象,并在 onAnimationEnd() 回调中启动主要 Activity。
代码片段如下:
img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000).setListener(new AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animator animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animator animation) {
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
startActivity(intent);
}
@Override
public void onAnimationCancel(Animator animation) {
// TODO Auto-generated method stub
}
});
检查这个,
Intent intent=new Intent(this,NextActivity.class);
startActivity(intent);
使用这个。
private Handler handlerImage;
private Runnable runnableImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
ImageView img= (ImageView) findViewById(R.id.splash);
img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000);
handlerImage = new Handler();
runnableImage = new Runnable() {
@Override
public void run() {
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
startActivity(intent);
}
};
handlerImage.postDelayed(runnableImage, 3000);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (handlerImage != null) {
handlerImage.removeCallbacks(runnableImage);
}
}
@Zakaria Ait Ouchrif,
您可以使用 Activity overridePendingTransition() 方法与两个 xml in 和 out Animation。
您可以在 XML 资源文件中定义简单的过渡动画。
也可以参考this tutorial。
第一个activity的动画在我用startActivity
的时候没有效果,不知道有什么奇怪的。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
ImageView img = (ImageView) findViewById(R.id.splash);
img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000);
Intent intent = new Intent(getApplicationContext(), NextActivity.class);
startActivity(intent);
}
}
我希望您尝试显示您的 APP 徽标的缩放和旋转动画一段时间,然后尝试启动另一个 Activity。
由于您正在启动另一个 activity ,在 Imageview 上启动动画之前,ActivityManager 将切换到下一个动画,因此您看不到动画, 解决方案是将 Animationlistner 设置为提供给 ImageView 的 ViewPropertyAnimator 对象,并在 onAnimationEnd() 回调中启动主要 Activity。
代码片段如下:
img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000).setListener(new AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animator animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animator animation) {
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
startActivity(intent);
}
@Override
public void onAnimationCancel(Animator animation) {
// TODO Auto-generated method stub
}
});
检查这个,
Intent intent=new Intent(this,NextActivity.class);
startActivity(intent);
使用这个。
private Handler handlerImage;
private Runnable runnableImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
ImageView img= (ImageView) findViewById(R.id.splash);
img.animate().scaleX(0.6f).scaleY(0.6f).rotation(1080f).setDuration(2000);
handlerImage = new Handler();
runnableImage = new Runnable() {
@Override
public void run() {
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
startActivity(intent);
}
};
handlerImage.postDelayed(runnableImage, 3000);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (handlerImage != null) {
handlerImage.removeCallbacks(runnableImage);
}
}
@Zakaria Ait Ouchrif,
您可以使用 Activity overridePendingTransition() 方法与两个 xml in 和 out Animation。
您可以在 XML 资源文件中定义简单的过渡动画。
也可以参考this tutorial。