আমার ক্রিয়াকলাপটি তৈরি হওয়ার পরে আমি আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে একটি ভিউতে একটি অ্যানিমেশন প্রয়োগ করার চেষ্টা করছি। এটি করার জন্য, আমার দেখার বর্তমান আকারটি নির্ধারণ করতে হবে এবং তারপরে বর্তমান আকার থেকে নতুন আকারে স্কেল করার জন্য একটি অ্যানিমেশন সেট আপ করতে হবে। এই অংশটি রানটাইমের সময় অবশ্যই করা উচিত, যেহেতু ব্যবহারকারীর ইনপুটের উপর নির্ভর করে ভিউটি বিভিন্ন আকারে স্কেল করে। আমার লেআউটটি এক্সএমএলে সংজ্ঞায়িত করা হয়েছে।
এটি একটি সহজ কাজ বলে মনে হচ্ছে, এবং এ সম্পর্কিত প্রচুর পরিমাণে এসও প্রশ্ন রয়েছে যদিও আমার সমস্যার সমাধান হয়নি তা অবশ্যই। সুতরাং সম্ভবত আমি সুস্পষ্ট কিছু মিস করছি। আমি আমার দর্শনটিতে একটি হ্যান্ডেল পেয়েছি:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
এই কাজ করে জরিমানা, কিন্তু কলিং getWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
ইত্যাদি তারা সব রিটার্ন 0. আমি কলিং নিজে চেষ্টা করেছি measure()
দৃশ্য একটি কল দ্বারা অনুসরণgetMeasuredWidth()
, কিন্তু যে কোনো প্রভাব নেই।
আমি এই পদ্ধতিগুলিতে কল করার চেষ্টা করেছি এবং আমার ক্রিয়াকলাপ onCreate()
এবং এর মধ্যে ডিবাগারের মধ্যে অবজেক্টটি পর্যালোচনা করেছি onPostCreate()
। রানটাইমে আমি এই দর্শনটির সঠিক মাত্রাগুলি কীভাবে সনাক্ত করতে পারি?
match_parent
)। এই ক্ষেত্রে, ভিউটি আঁকার আগেই নিরাপদে বলা যেতে পারে এমন একটি সহজ সমাধান (উদাহরণস্বরূপ, আপনার ক্রিয়াকলাপের অনক্রিট () পদ্ধতি থেকে) কেবল প্রদর্শন.সেটসাইজ () ব্যবহার করা যায়; বিশদ জানতে stackoverflow.com/a/30929599/5025060 দেখুন। আমি জানি যে এটি নিক রীমন যা চেয়েছিল তা নয়, যারা এই সহজ পদ্ধতিটি ব্যবহার করতে সক্ষম হতে পারে তাদের কেবল একটি নোট রেখে যান।