मैं वर्तमान में ViewPager में पृष्ठों को स्विच करने के बीच कस्टम एनीमेशन पर काम कर रहा हूं। जब मैं बाईं ओर स्लाइड करता हूं, तो दृश्य बाईं ओर बढ़ रहा है और इसके नीचे से नया दृश्य सामने आ रहा है।चुनौती: ViewPager का कस्टम एनीमेशन। चयनित तत्वों की ऊंचाई बदलें (गुना देखें)
दूसरे और तीसरे छवि मैं नए दृश्य चित्र नहीं था पर: मैं देखने के लिए, कि बाईं ओर ले जाता है (कि मैं निपटाने) folowing छवियों पर की तरह हटना करना चाहते हैं सामने आ रहा है, लेकिन मुझे लगता है कि यह जरूरी नहीं था। क्या आपको कोई विचार है कि मैं कोड को कैसे संशोधित कर सकता हूं?
मैं टेबललाउट, सापेक्ष लयआउट और फ़्रेमलाउट की ऊंचाई बदलना चाहता हूं और टेक्स्टव्यू दोनों की ऊंचाई रखना चाहता हूं। इसके अलावा मुझे पूरे दृश्य की एक्स-स्थिति बदलनी होगी।
मैं आपके रचनात्मक उत्तरों (कोड) के लिए तत्पर हूं। नीचे मैं एनीमेशन के लिए अपना कोड संलग्न करता हूं।
import android.view.View;
import android.widget.RelativeLayout;
import android.annotation.SuppressLint;
import android.support.v4.view.ViewPager.PageTransformer;
public class DepthPageTransformer implements PageTransformer {
private static float MIN_SCALE = 0.75f;
@SuppressLint("NewApi")
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
//float scaleFactor = (1 - Math.abs(position));
//WHAT TO PUT HERE TO ARCHIVE MY GOAL??
//This is how I can get particular layouts:
// RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.fragment_object_canvas_RelativeLayout1);
//relativeLayout.setScaleX(scaleFactor);
//relativeLayout.setScaleY(scaleFactor);
} else if (position <= 1) { // (0,1]
// Fade the page out.
view.setAlpha(1 - position);
// Counteract the default slide transition
view.setTranslationX(pageWidth * -position);
//view.setRotation(1 - (position*360));
// Scale the page down (between MIN_SCALE and 1)
float scaleFactor = MIN_SCALE
+ (1 - MIN_SCALE) * (1 - Math.abs(position));
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
अद्यतन:
मैं निम्नलिखित कोड के साथ (अब के लिए मैं केवल यह कर सकते हैं) पूरे दृश्य की ऊंचाई के साथ हेरफेर कर सकते हैं:
LinearLayout relativeLayout = (LinearLayout) view.findViewById(R.id.fragment_object_canvas_linearLayout1);
relativeLayout.setLayoutParams(new FrameLayout.LayoutParams(relativeLayout.getWidth(), NEW_HEIGHT_HERE)));
हालांकि, मैं नहीं यकीन है कि क्या करना चाहिए हूँ मैं इसे gectly काम करने के लिए NEW_HEIGHT_HERE चर डाल दिया ...
मैं यह काम नहीं कर सकते हैं फोन करके अपने एनीमेशन का चयन कर सकते हैं। मुझे लगता है कि मुझे बदलना चाहिए: शीर्ष मार्जिन, नीचे मुख्य कंटेनर का मार्जिन और फिर टेक्स्ट व्यू के बीच कंटेनर की ऊंचाई। अगर कोई इसे हल करने में सक्षम है तो मैं कोड की प्रतीक्षा कर रहा हूं। – Marek