【问题标题】:How can I turn on animation programatically?如何以编程方式打开动画?
【发布时间】:2012-11-20 10:42:50
【问题描述】:

如何以编程方式打开动画?我正在使用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);




            }
        });

这仅在动画打开时有效。我是通过设置->显示->动画来实现的

我找到了

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

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

【问题讨论】:

  • 做什么? overridePendingTransition() 用于 Activity 转换.. 你想做什么?!?
  • 让您的问题更具体并提供您的代码....
  • @MBMJ & 我添加了我的代码。对不起,我之前不清楚!
  • @Chris.Jenkins 我在这里添加了代码。

标签: android android-animation


【解决方案1】:

您不需要像那样务实地启动动画。

您只需在正确的位置拨打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);

将禁用窗口动画!

【讨论】:

  • 试过了但没用!我正在使用 Htc explorer 和姜饼 2.3.5。
  • 只有当我手动打开它时它才有效!即使我在使用 android ICS 4.0.3 的 Lg Optimus L7 上也面临同样的问题。在 LG 上。在这里,即使我需要打开它!
  • 嗯,我正在尝试任何一种方式。如果它已启用(我手动执行)然后我尝试禁用它。但它既不是禁用,也不是通过代码启用!其实我不想改变用户设置。一旦我关闭应用程序,我就会关闭窗口动画。为了启用和禁用动画,我参考了这篇文章 [stackoverflow.com/questions/10936946/…,即使他有我想要的相同要求。如果你能解决它。我们俩都会有解决方案。提前致谢
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多