2012-02-15 46 views
36

Điều tôi đang cố gắng đạt được là ghi đè hoạt ảnh bắt đầu hoạt ảnh.Thực hiện hoạt động mới xuất hiện phía sau hoạt động cũ trong khi chuyển đổi

Hoạt ảnh sẽ tạo ấn tượng rằng hoạt động cũ ở trên cùng của hoạt động mới, sau đó trượt xuống và ra khỏi màn hình để hiển thị hoạt động mới. Tôi đã thử nhiều cách như sử dụng overridePendingTransition(startAnim, exitAnim) Nhưng vấn đề là cả hai đều hoạt hình trong cùng một dòng thời gian. Vì vậy, overridePendingTransition(R.anim.hold, R.anim.exit_slide_down); Bạn không bao giờ thấy hoạt ảnh xuất cảnh vì hoạt động mới ở trên cùng. Điều này có thể đạt được bằng cách sử dụng khuôn khổ?

enter image description here

+0

Tôi tin rằng bạn có thể trì hoãn một hoạt hình, xin lỗi vì đã không giúp đỡ nhiều hơn. – Warpzit

+0

bản sao có thể có của [Tôi có thể thay đổi hoạt ảnh chuyển tiếp Android startActivity()?] (Http://stackoverflow.com/questions/3515264/can-i-change-the-android-startactivity-transition-animation) –

Trả lời

31

Thực ra, tôi đã tìm thấy thuộc tính được gọi là android:zAdjustment trong tệp hoạt ảnh.

Nếu tôi đặt android:zAdjustment="bottom" trong hold.xml (màn hình 2) và android:zAdjustment="top" trong push_down_out.xml (màn hình 1) thì tôi có thể nhận được hiệu ứng mong muốn.

Điều này xảy ra xung quanh vấn đề thứ tự z (tôi cho rằng đó là vấn đề với thời gian hoạt ảnh vì vậy tôi đã barking lên cây sai).

John

+4

Bạn có thể vui lòng bao gồm các tệp hoạt hình của bạn như thế nào? – Emil

+0

Điều này hóa ra là lý do tại sao hoạt ảnh chuyển tiếp của tôi cũng không được phát. Như một tiền thưởng thêm, tôi chỉ phải thêm android: zAdjustment = "top" vào exitanimation (cái tôi muốn chơi ở trên), vì vậy bạn thậm chí không cần "đáy". – MacD

+0

@johncc bạn có thể vui lòng bao gồm các tệp xml và mã nguồn không? Cảm ơn! –

30

Tôi đã cố gắng để giải quyết giải pháp của bạn trong một dự án mẫu và tôi đã nhận nó làm việc với mã này:

Gọi hoạt hình với:

startActivity(new Intent(this, Activity2.class)); 
overridePendingTransition(R.anim.push_down_in,R.anim.push_down_out); 

R.anim .push_down_in:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="300"/> 
</set> 

R.anim.push_down_out:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="300"/> 
</set> 
+2

thực sự nếu bạn cho thời lượng khác nhau cho mỗi hoạt ảnh, nó mang lại ấn tượng thực sự tuyệt vời. Ví dụ cho R.anim.push_down_in: 'android: duration =" 900 "' và cho R.anim.push_down_out: 'android: duration =" 1500 "' – mehmet

7

Các giải pháp mà làm việc cho tôi:

R.anim.exit_slide_down

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:zAdjustment="top"> 

    <translate android:fromYDelta="0" 
       android:toYDelta="100%p" 
       android:duration="600" /> 
</set> 

... và sau đó

Intent intent = new Intent(activity, SecondActivity.class); 
startActivity(intent); 
activity.overridePendingTransition(0, R.anim.exit_slide_down); 
Các vấn đề liên quan