2015-02-13 20 views
14

Tôi kết hợp một ứng dụng rất đơn giản sử dụng các chuyển đổi phần tử được chia sẻ khi bắt đầu một hoạt động với chủ đề Dialog (source code on github).Chuyển đổi phần tử chia sẻ với Hoạt động hộp thoại

tôi có kết quả sau:

sample app

Như bạn có thể thấy có 2 vấn đề với quá trình chuyển đổi/hoạt hình:

  1. Các hình ảnh động được chỉ hiển thị trong khu vực của hộp thoại hoạt động để nó clip và trông xấu xí.
  2. Không có chuyển đổi/hoạt ảnh khi tôi nhấn vào bên ngoài hoạt động để quay trở lại.

Làm cách nào để khắc phục những sự cố này? Bất kỳ trợ giúp sẽ được đánh giá cao.

EDIT: Sau câu trả lời Quanturium của tôi đã làm những điều sau đây để làm cho nó làm việc:

Sử dụng chủ đề sau đây thay vì một chủ đề Dialog:

<style name="AppTheme.Transparent" parent="AppTheme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:backgroundDimEnabled">true</item> 
</style> 

Sử dụng một CardView như là nền tảng cho Dialog nhìn và cho các góc và bóng tròn.

Kết thúc cuộc gọiAfterTransition(); khi người dùng nhấn vào bên ngoài CardView.

Bây giờ nó trông như thế này (code), các CardView cần lọc để phù hợp hơn về Dialog, nhưng nó làm việc ít nhất .:

working

+0

http://stackoverflow.com/questions/17542517/activity-with-transparent-background/39403147#39403147 Có thể trợ giúp bạn. – boiledwater

+0

Cảm ơn bạn đã github repo !! Nó tiết kiệm cuộc sống của tôi :) –

Trả lời

9

Một quá trình chuyển đổi hoạt động làm việc như thế này. Khi bạn bắt đầu hoạt động thứ hai của mình, nó sẽ được hiển thị trên đầu tiên của bạn với một nền trong suốt. Các phần tử chia sẻ được định vị giống như cách chúng đang hoạt động đầu tiên và sau đó được chuyển động đến đúng vị trí được chỉ định trên hoạt động thứ hai.

Trong trường hợp của bạn, bạn đang sử dụng android: theme = "@ style/Theme.AppCompat.Dialog" có nghĩa là kích thước vùng vẽ của hoạt động thứ hai nhỏ hơn kích thước của hoạt động đầu tiên. Điều này giải thích việc cắt và không chuyển đổi khi nhấp vào bên ngoài.

Điều bạn muốn làm là loại bỏ chủ đề đó và triển khai bố cục của riêng bạn bằng nền tối/bóng tối để có thể thực hiện chuyển đổi suôn sẻ của bạn.

+0

Đây là một giải pháp khác, nhưng tôi sẽ thử nó – Longi

+0

Điều này có hiệu quả, tôi sẽ chỉnh sửa câu hỏi để hướng dẫn chi tiết về cách thực hiện. – Longi

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