正如您在此video中看到的那樣,我試圖爲新活動的開放設置動畫。圖片在打開活動時可以正常動畫,但在返回時失敗(我正在使用supportFinishAfterTransition()
)Android共享元素轉換錯誤
我試過了各種我在這裏或Google上找到的方法,但沒有任何工作,即:
定義過渡RES /轉換下:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds/>
<changeImageTransform/>
</transitionSet>
,然後在這兩個樣式的主要活動,並說我開了一個使用它:
<!-- enable window content transitions -->
<item name="android:windowActivityTransitions">true</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
我也試過同樣在我的Java代碼:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setSharedElementExitTransition(...);
getWindow().setSharedElementEnterTransition(...);
從我的觀點持有者我這樣做在開始新的活動:
private void openNewActivity() {
String transitionName = "details";
Intent intent = new Intent(mContext, ActivityCardDetails.class);
ViewCompat.setTransitionName(mImageView, transitionName);
//noinspection unchecked
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation((MainActivity)mContext,
mImageView, // The view which starts the transition
transitionName // The transitionName of the view we’re transitioning to
);
ActivityCompat.startActivity((MainActivity) mContext, intent, options.toBundle());
}
這是啓動的ImageView的動畫:
<ImageView
android:layout_width="match_parent"
android:layout_height="180dp"
android:id="@+id/business_card_image"
android:adjustViewBounds="true"
android:scaleType="centerCrop" />
,這是一個應該動畫回第二ImageView的:
<ImageView
android:id="@+id/business_card_image"
android:layout_width="match_parent"
android:layout_height="180dp"
android:scaleType="centerCrop"
android:fitsSystemWindows="@bool/isFitSystemWindows"
android:transitionName="@string/transition_card_details"
app:layout_collapseMode="parallax" />
PS:我正在使用Glide加載圖像,因爲這是用戶創建的內容,我無法控制圖像的高寬比。
Glide.with(mContext)
.load(toLoad)
.fitCenter()
.centerCrop()
.crossFade()
.into(mImageView);
我一直在努力解決這個問題好幾周了,我似乎無法克服它。
爲什麼它不能讓它的邊界變回來?
謝謝!
更新:顯然該錯誤與圖像寬度有關。如果我將寬度設置爲常量(比如200dp),則動畫在兩種方式中運行都很好,但如果將圖像寬度設置爲match_parent
,則返回動畫會被破壞。
UPDATE2:我幾乎可以說,這個錯誤是關係到圖像加載LIB(滑翔或畢加索都有這個問題)