मैं अपनी गतिविधि बनाए जाने के बाद अपने एंड्रॉइड ऐप में एक दृश्य पर एनीमेशन लागू करने का प्रयास कर रहा हूं। ऐसा करने के लिए, मुझे दृश्य के वर्तमान आकार को निर्धारित करने की आवश्यकता है, और फिर वर्तमान आकार से नए आकार में स्केल करने के लिए एक एनीमेशन सेट करें। यह भाग रनटाइम पर किया जाना चाहिए, क्योंकि दृश्य उपयोगकर्ता से इनपुट के आधार पर अलग-अलग आकारों में होता है। मेरा लेआउट XML में परिभाषित किया गया है।
यह एक आसान काम की तरह लगता है, और इस बारे में बहुत सारे एसओ प्रश्न हैं, हालांकि कोई नहीं जिसने मेरी समस्या को हल किया, जाहिर है। इसलिए शायद मुझे कुछ स्पष्ट याद आ रहा है। मुझे मेरे विचार से एक हैंडल मिलता है:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
यह ठीक काम करता है, लेकिन जब बुला getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
, आदि, वे सब वापसी 0. मैं भी मैन्युअल बुला की कोशिश की है measure()
देखने के लिए एक फोन के बाद पर getMeasuredWidth()
है, लेकिन यह कोई प्रभाव नहीं है।
मैंने इन विधियों को कॉल करने की कोशिश की है onCreate()
और अपनी गतिविधि में और में डिबगर में ऑब्जेक्ट का निरीक्षण किया है onPostCreate()
। मैं रनटाइम के दौरान इस दृश्य के सटीक आयामों का पता कैसे लगा सकता हूं?
match_parent
)। इस मामले में, एक सरल समाधान जिसे सुरक्षित रूप से देखने से पहले भी कॉल किया जा सकता है (जैसे, आपकी गतिविधि का ऑनक्रिएट () विधि) केवल Display.getSize () का उपयोग करना है; देख stackoverflow.com/a/30929599/5025060 जानकारी के लिए। मुझे पता है कि यह @NikReiman ने नहीं पूछा है, बस उन लोगों के लिए एक नोट छोड़ रहा है जो इस सरल विधि का उपयोग करने में सक्षम हो सकते हैं।