如何以编程方式打开动画?

时间:2012-11-18 19:50:57

标签: android android-animation

如何以编程方式打开动画?我正在使用overridePendingTransition();。除非我自己打开动画,否则它不起作用。任何人都可以告诉我如何以编程方式打开动画,这些动画在显示/动画设置中?我正在使用overridePendingTransition();开设新活动。

这是我的xml

grow_fadein_center

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromXScale="0.6" android:toXScale="1.0"
           android:fromYScale="0.6" android:toYScale="1.0"
           android:pivotX="50%" android:pivotY="50%"
           android:duration="@android:integer/config_longAnimTime" />
    <alpha android:interpolator="@anim/decelerate_interpolator"
            android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_longAnimTime" />
</set>

shrink_fadeout_center:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromXScale="1.0" android:toXScale="0.5"
           android:fromYScale="1.0" android:toYScale="0.5"
           android:pivotX="50%" android:pivotY="50%"
           android:duration="@android:integer/config_longAnimTime" />
    <alpha android:interpolator="@anim/accelerate_interpolator"
            android:fromAlpha="1.0" android:toAlpha="0.0"
            android:duration="@android:integer/config_longAnimTime"/>
</set>

这是我用来打开意图的代码

btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ContentResolver cr = getContentResolver();
                Settings.System.putInt(cr, Settings.System.WINDOW_ANIMATION_SCALE, 0);

                Intent intent=new Intent(context,Second.class);


                startActivity(intent);
                overridePendingTransition(R.anim.grow_fade_in_center, R.anim.shrink_fade_out_center);
                finish();

//testing on textview worked without turning system animation on.
                Animation animation=AnimationUtils.loadAnimation(context, R.anim.grow_fade_in_center);
                txt.startAnimation(animation);




            }
        });

仅在启用动画时才有效。我通过settings-&gt; display-&gt; animation

这样做

我找到了

ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WINDOW_ANIMATION_SCALE, 0);

通过设置整数打开或关闭动画!但它对我不起作用! 我需要的是如何在程序设置中以编程方式打开/关闭动画?

1 个答案:

答案 0 :(得分:0)

您不需要像这样实际地启动动画。

您只需在正确的位置拨打overridePendingTransition(R.anim.grow_fade_in_center, R.anim.shrink_fade_out_center);

public void onClick(View v) {
    startActivity(HomeActivity.class);
    overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    finish();
}

也在做:

Settings.System.putInt(cr, Settings.System.WINDOW_ANIMATION_SCALE, 0);

将禁用窗口动画!