Android 擷取View繪製前的高度

來源:互聯網
上載者:User

標籤:

在Android開發過程中,我們可能需要擷取View繪製前的高度或者寬度,一種的可能情形是我們初始化的時候讓某個View是Visible = Gone的,當我們觸發某個事件的時候需要它顯示並且希望有一些動畫效果。這時候我們就要擷取這個View顯示前即繪製前的寬度或者高度。原理很簡單,我們知道,View的繪製過程發生之前,會先執行onMeasure方法。那麼我們就可以利用反射來或者我們需要的值。下面給出擷取高度的代碼,寬度同理。

private int getTargetHeight(View v) {

    try {        Method m = v.getClass().getDeclaredMethod("onMeasure", int.class,                int.class);        m.setAccessible(true);        m.invoke(v, MeasureSpec.makeMeasureSpec(                ((View) v.getParent()).getMeasuredWidth(),                MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(0,                MeasureSpec.UNSPECIFIED));    } catch (Exception e) {    }    return v.getMeasuredHeight();}

拿到這個高度之後我們就可以做我們想做的動畫效果或者是其他的事情了。

Android 擷取View繪製前的高度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.