Animator本身并不一定要在主線程start,但是如果本身是ObjectAnimator改變view屬性則一定要在主線程start?;蛘遃alueAnimator.AnimatorUpdateListener的回調(diào)中想改變view屬性,則回調(diào)后要在主線程操作view。
Android系統(tǒng)不會繪制完全不可見的view。但是會繪制部分可見view的整個view,不只是可見部分。
android.graphics.Matrix類?
matrix.preXXX(參數(shù))(參數(shù)本質(zhì)上是另一個矩陣,通過相乘達到對當(dāng)前bitmap的像素點矩陣scale、translate、rotate等目的,此方法是對bitmap像素矩陣前乘)
matrix.postXXX(參數(shù))(參數(shù)本質(zhì)上是另一個矩陣,通過相乘達到對當(dāng)前bitmap的像素點矩陣scale、translate、rotate等目的,此方法是對bitmap像素矩陣后乘)
canvas.drawBitmap(bitmap,matrix,paint)
其實前兩步并不會真正改變matrix,只是設(shè)置了matrix的矩陣計算方式,第三部的時候才會真正對矩陣做變換(相乘)。所以也就容易理解每一個preXX實際上最終都是當(dāng)前基礎(chǔ)上再次前置(調(diào)用順序跟實際作用順序正好相反,造成理解困難),postXX則是在當(dāng)前基礎(chǔ)上再次后置(調(diào)用順序與實際作用順序相同,這也是為什么大家都喜歡用postXXX)。preA;preB;postC;postD->BACD。而set方法則是直接設(shè)置參數(shù)矩陣會覆蓋之前的計算方式,無論set哪一個屬性都會覆蓋之前所有屬性。set之后的矩陣變化依然符合上述規(guī)則。所以matrix變換調(diào)用順序和最終變換結(jié)果順序可以簡單總結(jié)為:遇到pre順序會前置,遇到post順序會后置,遇到set會覆蓋。