मुझे एक ही समस्या थी और समाधान खोजने की कोशिश करने में कई घंटे बिताए। मेरा समाधान CollapsingToolbarLayout
के अंदर ढहने वाले दृश्य (छवि दृश्य और टेक्स्ट व्यू) को जोड़ना था और फिर कोड में संक्रमण को संभालना था। इस तरह यह CollapsingToolbarLayout से विस्तार से अधिक लचीला और सरल है।
सबसे पहले आप लंबन गुणों के साथ CollapsingToolbarLayout
के अंदर अपने विचार जोड़ने की आवश्यकता होगी: किसी तरह
private static final float SCALE_MINIMUM=0.5f;
appBarLayout.setOnWorkingOffsetChange(new ControllableAppBarLayout.OnWorkingOffsetChange() {
@Override
public void onOffsetChange(int offSet, float collapseDistance) {
imageView.setScaleX(1 + (collapseDistance * SCALE_MINIMUM));
imageView.setScaleY(1 + (collapseDistance * SCALE_MINIMUM));
textView.setScaleX(1 + (collapseDistance * SCALE_MINIMUM));
textView.setScaleY(1 + (collapseDistance * SCALE_MINIMUM));
// You can also setTransitionY/X, setAlpha, setColor etc.
}
});
:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop:"80dp"
android:src="@drawable/icon"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.8"/> //set vertical transition here
फिर एक OnOffsetchangeListner
की मदद से दृश्य की स्केलिंग सेट डिफ़ॉल्ट offsetChangedListener
मेरे लिए ठीक से काम नहीं करता है (आपको शायद इसे अभी भी डिफ़ॉल्ट श्रोता के साथ आजमाया जाना चाहिए), इसलिए मैंने https://gist.github.com/blipinsk/3f8fb37209de6d3eea99 से ControllableAppBarLayout
का उपयोग किया और निम्न को जोड़ा:
private OnWorkingOffsetChange onWorkingOffsetChange;
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
if (!isInEditMode()) {
onWorkingOffsetChange.onOffsetChange(i, (float) i/appBarLayout.getTotalScrollRange());
}
}
public void setOnWorkingOffsetChange(OnWorkingOffsetChange listener) {
this.onWorkingOffsetChange = listener;
}
public interface OnWorkingOffsetChange {
void onOffsetChange(int offSet, float collapseDistance);
}
केवल समस्या यह है कि आप अपने CollapsingToolbarLayout
के लिए app:contentScrim="#00000000"
(पारदर्शी) सेट करना होगा तो अपने विचार अभी भी दिखाई दे रहे हैं जब उपकरण पट्टी संकुचित हो जाता है, है। यदि आपको वास्तव में ढहने-पृष्ठभूमि प्रभाव की आवश्यकता है तो मुझे यकीन है कि आप OffsetChangeListener
में पृष्ठभूमि छवि के दृश्य को अल्फा सेट करके "नकली" कर सकते हैं। ;)
आप एक 'CollapsingToolbarLayout' की कोशिश की है: उदाहरण के लिए यहाँ एक राय यह है कि एक शीर्षक और एक उपशीर्षक शामिल है जिसमें 'ImageView' पहले और फिर' 'LinearLayout' 2 'टेक्स्ट व्यू के साथ है? – shkschneider
मैंने कोशिश की है, लेकिन मेरा उद्देश्य टूलबार में शीर्षक की एनीमेशन को संरक्षित करने के लिए मेरे कस्टम व्यू के साथ शीर्षक को प्रतिस्थापित करना है। – CeccoCQ
@shkschneider आप थोड़ा और समझाएंगे। मैं –