我正在开发一个涉及活动之间转换的应用程序。使用覆盖挂起过渡我成功了,但活动之间的动画默认情况下仅支持某些设备。但是有些设备必须手动在设置中设置动画。现在的问题是使用代码这是否可能?
任何示例代码或链接真的很明显
提前致谢。
我正在开发一个涉及活动之间转换的应用程序。使用覆盖挂起过渡我成功了,但活动之间的动画默认情况下仅支持某些设备。但是有些设备必须手动在设置中设置动画。现在的问题是使用代码这是否可能?
任何示例代码或链接真的很明显
提前致谢。
我们可以通过以下步骤在活动之间制作动画:
第一步,在 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%"/>
之后我们需要两个活动。第一活动
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" />
您可以在GmailAnimation或LopeAnimations中查看这些示例。你也可以在这个博客中看到更多。
除了 API 5 之后的 API 5 之后,您实际上无法控制 Activity 动画,overridePendingTransitions
这实际上涵盖了所有设备(将您的 min API 设置为 7/8,涵盖 94% 以上的设备)。
如果特定设备覆盖了过渡类型,那么您对此无能为力,但您通常会发现它用于默认动画。
呼入overridePendingTransition()
将onCreate()
覆盖他们设备默认执行的操作。