ฉันพยายามใช้แอนิเมชั่นกับมุมมองในแอพ Android ของฉันหลังจากสร้างกิจกรรมแล้ว ในการทำเช่นนี้ฉันต้องกำหนดขนาดปัจจุบันของมุมมองจากนั้นตั้งค่าภาพเคลื่อนไหวเพื่อปรับขนาดจากขนาดปัจจุบันเป็นขนาดใหม่ ส่วนนี้ต้องทำที่รันไทม์เนื่องจากมุมมองจะปรับขนาดให้แตกต่างกันขึ้นอยู่กับอินพุตจากผู้ใช้ เค้าโครงของฉันถูกกำหนดใน XML
ดูเหมือนว่าจะเป็นงานง่ายและมีคำถาม SO มากมายเกี่ยวกับเรื่องนี้แม้ว่าจะไม่มีใครช่วยแก้ปัญหาของฉันได้ ดังนั้นบางทีฉันอาจพลาดบางอย่างที่ชัดเจน ฉันเข้าใจมุมมองของฉันโดย:
ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID);
นี้ทำงานได้ดี แต่เมื่อโทรgetWidth()
, getHeight()
, getMeasuredWidth()
, getLayoutParams().width
ฯลฯ พวกเขากลับมาทุก 0. ฉันได้พยายามด้วยตนเองเรียกmeasure()
ในมุมมองตามด้วยการโทรไปgetMeasuredWidth()
แต่ไม่มีผล
ฉันได้ลองเรียกเมธอดเหล่านี้และตรวจสอบวัตถุในดีบักเกอร์ในกิจกรรมของฉันonCreate()
และในonPostCreate()
. ฉันจะหาขนาดที่แน่นอนของมุมมองนี้ที่รันไทม์ได้อย่างไร
match_parent
) ในกรณีนี้วิธีแก้ปัญหาที่ง่ายกว่าซึ่งสามารถเรียกใช้ได้อย่างปลอดภัยก่อนที่ View จะถูกดึงออกมา (เช่นจากเมธอด onCreate () ของกิจกรรมของคุณ) เพียงแค่ใช้ Display.getSize (); ดูรายละเอียดstackoverflow.com/a/30929599/5025060 ฉันรู้ว่านี่ไม่ใช่สิ่งที่ @NikReiman ขอเพียงแค่ฝากข้อความถึงผู้ที่อาจใช้วิธีที่ง่ายกว่านี้ได้