我在android中创建了一个活动,我想要的是当我启动应用程序时,我的应用程序中的第一个活动应该来自左侧并滑动到右侧动画效果。但我不知道如何实现它,所以可以任何人帮助我或给我一些技巧,以便我可以解决它。我已经准备好了我的项目动画XML。
提前谢谢你 我的代码:
package com.esp.Estorec.ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.RelativeLayout;
public class SplashActivity1 extends Activity implements AnimationListener {
RelativeLayout view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view=(RelativeLayout)findViewById(R.id.splash1);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_splash1);
Animation animationSlideInLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
animationSlideInLeft.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
// if you need to do something
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}});
view.startAnimation(animationSlideInLeft);
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
handler.sendEmptyMessage(1);
}
}, 2000);
}
private Handler handler = new Handler()
{
@SuppressWarnings("deprecation")
@Override
public void handleMessage(android.os.Message msg)
{
try
{
Intent intent = null;
intent = new Intent(SplashActivity1.this,
SplashActivity2.class);
startActivity(intent);
overridePendingTransition(R.anim.animated_activity_slide_left_in, R.anim.animated_activity_slide_right_out);
finish();
} catch (Exception e) {
}
}
};
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:3)
在styles.xml中定义一个新的动画样式,如下所示
<style name="MyTheme.Window" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/your_desired_animation</item>
<item name="android:activityOpenExitAnimation">@anim/your_desired_animation</item>
<item name="android:activityCloseEnterAnimation">@anim/your_desired_animation</item>
<item name="android:activityCloseExitAnimation">@anim/your_desired_animation</item>
</style>
然后在主题(themes.xml)中设置此样式,如下所示:
<style name="MyTheme" parent="@android:style/Theme">
<item name="android:windowAnimationStyle">@style/MyTheme.Window</item>
</style>
然后您可以将这些主题设置为AndroidManifest.xml中的每个活动,如下所示:
<activity
android:name="your_activity"
android:theme="@style/MyTheme">
</activity>
答案 1 :(得分:2)
将“view”替换为最外层的布局名称。将此代码写入您希望动画发生的活动的oncreate方法中。
animationSlideInLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
animationSlideInLeft.setDuration(1500);
animationSlideInLeft.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
// if you need to do something
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}});
view.startAnimation(animationSlideInLeft);
答案 2 :(得分:1)
将活动的背景颜色设置为白色(#FFF),创建一个imageview,imageview应该是透明的,然后使用所需的drawable数量编写XML动画。最后在imageview中启动动画。这应该可以解决问题。