मेरी एप्लिकेशन मुख्य स्क्रीन में छवियों का ग्रिड दृश्य होता है। जब उपयोगकर्ता कोई छवि चुनता है, तो साझा तत्व संक्रमण का उपयोग करके एक विस्तार गतिविधि शुरू की जाती है जो चयनित ग्रिड छवि को कार्डव्यू में विस्तारित गतिविधि में स्थित एक युग्मित छवि में एनिमेट करता है।साझा तत्व संक्रमण एक समन्वयक के साथ संयुक्त होने पर काम नहीं कर रहे हैं और CollapsingToolbarLayout
मेरी विवरण दृश्य एक्सएमएल लेआउट उन्नयन एक CollapsingToolbarLayout साथ साथ एक CoordinatorLayout शामिल करने के लिए करने के बाद, साझा तत्व संक्रमण छवि गलत स्थान विस्तार गतिविधियों में ("enter" गतिविधि) दृश्य ले जाता है। ढांचे पूरे ऐपबारलाउट और ऑफ्रल को संकुचित करने के लिए प्रतीत होता है और छवि अनुमानित स्थिति में एनिमेट करता है अगर 0Vमें लक्ष्य छवि दृश्य शामिल है तो कार्डव्यू के ऊपर कोई CollapsingToolBarLayout नहीं होगा।
समस्या activity_detail.xml में 3 CardViews में से किसी एक को जोड़ने में कोई imageView (एक transitionName के साथ) द्वारा क्रिस बेंस 'cheesesquare sample app में दोहराया जा सकता है:
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:transitionName="sharedImage" />
करके सेट करने के लिए एक साझा तत्व संक्रमण onBindViewHolder में CheeseListFragment.java में इस प्रकार है:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mBoundString = mValues.get(position);
holder.mTextView.setText(mValues.get(position));
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, CheeseDetailActivity.class);
intent.putExtra(CheeseDetailActivity.EXTRA_NAME, holder.mBoundString);
holder.mImageView.setTransitionName("sharedImage");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(
getActivity(v.getContext()),
holder.mImageView,
"sharedImage");
ActivityCompat.StartActivity((MyActivity) context, intent, options.toBundle());
}
});
Glide.with(holder.mImageView.getContext())
.load(Cheeses.getRandomCheeseDrawable())
.fitCenter()
.into(holder.mImageView);
}
आप एप्लिकेशन को चलाने के लिए, और एक पनीर सूची आइटम पर क्लिक करते हैं, आप कैसे करेंगे संक्रमण एनीमेशन छवि को गंतव्य गतिविधि दृश्य में गलत (बहुत अधिक) ऑफसेट पर ले जाता है। एक बार एनीमेशन पूर्ण हो जाने पर छवि को सही स्थिति में "वार" करने के लिए दिखाई देगी।
संभावित कार्य-आस-पास के किसी भी विचार का बहुत स्वागत है।
मुझे इस समस्या के लिए एक फिक्स मिला है और यह मेरे रेपो में है https://github.com/lawloretienne/SharedElementTransition – toobsco42