覆盖活动的待定过渡

时间:2012-11-18 20:03:35

标签: android-activity android-animation transitions

我正在开发一个涉及活动之间转换的应用程序。使用覆盖挂起转换我成功了,但活动之间的动画默认只支持某些设备。但有些设备手动必须在设置中设置动画。现在的问题是使用代码这是否可行?

任何示例代码或链接都非常明显

提前致谢。

2 个答案:

答案 0 :(得分:0)

除了{5}以后的overridePendingTransitions之外,您实际上无法控制活动动画,所有这些都包含所有设备(将您的最小API设置为覆盖94%以上设备的7/8)

如果某个特定设备会覆盖转换类型,那么您无法做很多事情,但您通常会发现它是默认动画。

overridePendingTransition()中呼叫onCreate()将覆盖设备默认执行的操作。

答案 1 :(得分:0)

我们可以通过以下步骤在活动之间制作动画:

第一步,在res中我们创建目录,其名称是anim,之后。 在此目录中,我们创建了4个文件:

go_in.xml

<translate
    android:duration="700"
    android:fromYDelta="100%"
    android:toYDelta="0%"/>

go_out.xml

<scale android:duration="700"
    android:fromXScale="100%"
    android:fromYScale="100%"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="70%"
    android:toYScale="70%"/>

back_in.xml

<scale android:duration="700"
    android:fromXScale="70%"
    android:fromYScale="70%"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="100%"
    android:toYScale="100%"/>

back_out.xml

<translate
    android:duration="700"
    android:fromYDelta="0%"
    android:toYDelta="100%"/>

之后我们需要两个活动。 FirstActivity

package com.thedeveloperworldisyours.gmailanimation;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void goTo(View view) {
        Intent intent = new Intent(this, SecondActivity.class);
        startActivity(intent);


    }

}

这是布局activity_first.xml:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:onClick="goTo"
    android:text="@string/activity_main_go" />

最后在你的第二个活动中

package com.thedeveloperworldisyours.gmailanimation;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        overridePendingTransition(R.anim.go_in, R.anim.go_out);
    }

    public void back(View view) {
        finishMyActivity();
    }

    @Override
    public void onBackPressed() {
        finishMyActivity();
    }

    public void finishMyActivity() {
        finish();
        overridePendingTransition(R.anim.back_in, R.anim.back_out);
    }
}

这是布局activity_second.xml

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:onClick="back"
    android:text="@string/activity_second_back" />

您可以在GmailAnimationLopeAnimations中查看这些示例。您还可以在此Blog中看到更多内容。