1. 程式人生 > >關於getTop獲取值為0與activity因設配配置重啟焦點位子的問題

關於getTop獲取值為0與activity因設配配置重啟焦點位子的問題

寫在前面:

      關於碰到這2個問題是在我做tv端動畫的時候碰到,當時的情景是:想讓view獲得焦點時,顯示一個上下移動的動畫

尷尬的是我切換語言再回到activity是的時候view移到了介面的頂端.

分析:1.焦點問題,當activity重啟的時候儘管我沒有在saveInstance中儲存相關的的資料,但恢復之後焦點還是在之前的view上,而不是第一次啟動activity時的預設位置上.

      原因 :這是系統預設儲存的,activity在這種情況下銷燬每個View會儲存自己的狀態,所以焦點還是會在之前的view上,並且重畫的view上回觸發Onfocuschange事件一次

        2.動畫異常的問題,在動畫設計的時候是讓view在35px上下移動,當重啟activity會直接到頂端.(屬性動畫的移動y是以Top為標準的,並且動畫移動並不會改變從程式碼獲取的Top位置)

    原因:百度給的結果是當view剛畫完的時候不要立即使用getTop與getTransilationX之類的方法,返回的結果只會是0.

解決方法: 很多種

1.這種情況我採取的是不改焦點,將Top值直接放在OnsaveInstance()中每次重啟的時候反正會記住焦點的位置,我們只需避免view.getTop()返回0就行了,重啟需要Top時將值給它.

2.就壓根不記住焦點位置,在銷燬前將焦點賦給一個Invisible的元件,這樣重啟就不會觸發動畫.

初級開發的想法,多指正