2010-12-15 13 views
12

Giả sử tôi có 2 tệp XML và hoạt động của tôi sẽ đặtContentView chế độ phù hợp dựa trên một số nút bấm từ người dùng. Có thể thay đổi hoạt ảnh chuyển tiếp để thay đổi chế độ xem nội dung không?có thể thực hiện các hoạt ảnh chuyển tiếp khi thay đổi chế độ xem trong cùng một hoạt động không?

Cho đến nay tôi thấy super.overridePendingTransition() phù hợp để bắt đầu các hoạt động mới, tuy nhiên ví dụ của tôi không bắt đầu hoạt động mới, nó chỉ thay đổi bố cục trong hiện tại.

Trả lời

31

Mathias Lin đã giải thích rất rõ.

Bạn luôn có thể sử dụng hình ảnh động cổ phiếu mặc định do khung Android cung cấp.

Heres một mã ví dụ:

boolean isFirstXml=evaluatingConditionFunction(); 
LayoutInflater inflator=getLayoutInflater(); 
View view=inflator.inflate(isFirstXml?R.layout.myfirstxml:R.layout.myseconxml, null, false); 
view.startAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right)); 
setContentView(view); 

Gọi này từ bất kỳ hoạt động của bạn mà giữ Xem chuyên của bạn.

Đối với hoạt ảnh tùy chỉnh, bạn có thể truy cập tài liệu dành cho nhà phát triển. Heres liên kết documentation.

7

Có, bạn có thể áp dụng hoạt ảnh trên hầu hết mọi chế độ xem bạn thích. Chỉ cần thông qua view.startAnimation(animation);

Đưa nhóm xem bên ngoài của bố cục tương ứng của bạn (chế độ xem nội dung) và áp dụng hoạt ảnh cho bố cục đó. Tùy thuộc vào loại hoạt ảnh bạn muốn làm, có thể có ý nghĩa để tăng/tải cả bố cục nhưng ẩn một trong số chúng và sau đó hoán đổi. Vui lòng chỉ định loại chuyển đổi bạn có trong đầu. Ví dụ: nếu bạn thực hiện chuyển đổi alpha, bạn sẽ chạy alphaAnimation trên bố cục hiện tại, khi hoạt ảnh kết thúc (AnimationListener), bạn đặt chế độ xem nội dung cho bố cục mới và làm mờ nội dung trở lại, thông qua một alphaAnimation khác.

3

Giải pháp tốt hơn là sử dụng ViewFlipper: đó là FrameLayout, có thể thực hiện hoạt ảnh khi thay đổi chế độ xem.

<ViewFlipper 
    android:id="@+id/[your_id_here]" 
    android:inAnimation="..." 
    android:outAnimation="..." 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     <RelativeLayout 
      <!--Your first layout --> 
     </RelativeLayout> 
     <RelativeLayout 
      <!--Your second layout --> 
     </RelativeLayout> 
</ViewFlipper> 

Sau đó, chuyển sang quan điểm với setDisplayedChild(int) hoặc showNext() hoặc showPrevious. Nếu bạn muốn có hoạt ảnh khác nhau cho chuyển động trái và phải, bạn phải đặt inAnimationoutAnimation trong mã trước khi chuyển đổi.

Ví dụ hoàn chỉnh hơn là here.

+0

Cảm ơn bạn. Nó đơn giản hơn nhiều so với bắt đầu hoạt động thứ hai với hoạt ảnh mà tôi đã sử dụng 'oldActivity.startActivity (newActivityIntent); oldActivity.overridePendingTransition (R.anim.slide_in_up, R.anim.slide_out_up); ' –

Các vấn đề liên quan