所以,我试图在我的Android应用程序中的两个活动之间建立一个转换,看起来类似于iOS应用程序中的转换。而我的#34;进入转型期"工作完美,我希望它的工作方式,新的布局滑过旧的布局,而旧布局稍微向左移动。但是现在我仍然坚持反向过渡,回到我的第一个布局,因为我希望它看起来与第一个过渡完全相同,但只是反转,我无法实现,导致Android自动将移动过渡移动到移出过渡的顶部,如附图中所示。
所以我会有两个想法来解决这个问题。是否有可能改变过渡层?如果没有,也可以在移动过程中移动动画面罩。但是对于这些可能性,我都知道如何实现它们。
我目前的代码:
我只是在我的两项活动的OnCreate上调用动画:
我主菜单的OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right);
setContentView(R.layout.activity_settings);
}
创建我的设置:
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-30%p"
android:toXDelta="0"
android:duration="@android:integer/config_longAnimTime" />
我的xml文件: slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="@android:integer/config_longAnimTime" />
滑出-left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="@android:integer/config_longAnimTime" />
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-30%p"
android:duration="@android:integer/config_longAnimTime" />
slide_out_right.xml
WITH CTE AS (
SELECT *
FROM (VALUES (1,'John.jpg',0,NULL),
(2,'Jane.jpg',0,NULL),
(3,'George.jpg',0,NULL),
(4,'Susan.jpg',0,NULL),
(5,'John2.jpg',0,1),
(6,'Susan2.jpg',0,4),
(7,'John3.jpg',1,1)) AS V (ID, [Filename], [Version], Parent)),
RNs AS(
SELECT COALESCE(C2.ID,C1.ID) AS ID,
COALESCE(C2.[Filename],C1.[Filename]) As [Filename],
COALESCE(C2.[Version],C1.[Version]) AS [Version],
COALESCE(C2.Parent,C1.Parent) AS [Parent],
ROW_NUMBER() OVER (PARTITION BY C1.ID ORDER BY C2.[Version] DESC) AS RN
FROM CTE C1
LEFT JOIN CTE C2 ON C1.ID = C2.Parent
WHERE C1.Parent IS NULL)
SELECT ID, [Filename], [Version]
FROM RNs
WHERE RN = 1;
答案 0 :(得分:0)
在您的MainActivity中
private boolean isReverseAnimation = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isReverseAnimation = false;
overridePendingTransition(R.anim.anim_slide_in_left,R.anim.anim_slide_out_left);
//your other code
}
@Override
protected void onStart() {
super.onStart();
if (isReverseAnimation) {
this.overridePendingTransition(R.anim.anim_slide_in_right,
R.anim.anim_slide_out_right);
}else{
isReverseAnimation = true;
}
}
并按原样设置活动。
如果有任何问题,请尝试告诉我。
快乐编码:)