這篇文章將為大家詳細(xì)講解有關(guān)怎么在Android中自定義View實(shí)現(xiàn)黑客帝國數(shù)字雨效果,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十余年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對(duì)網(wǎng)站進(jìn)行成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) configPaint() canvas?.let { if (isShowAllNumber()) { drawTotalNumbers(it) } else { drawPartNumbers(it) } } }
看onDraw方法,里面的drawParNumbers方法就是用來繪制下流狀態(tài),自然drawTotalNumbers就是繪制完全狀態(tài)的。究竟繪制那個(gè)狀態(tài)是有isShowAllNumber方法來判斷的
private fun isShowAllNumber(): Boolean { return nowHeight >= height }
其中nowHeight是一個(gè)成員變量,代表著現(xiàn)在所有文字的高度,在下流狀態(tài),每次多繪制一個(gè)文字,就會(huì)增加一個(gè)文字的高度。
接下來我們看drawTotalNumbers和drawPartNumbers
private fun drawPartNumbers(canvas: Canvas) { val count = (nowHeight / textSize).toInt() nowHeight += textSize drawNumbers(canvas, count) } private fun drawTotalNumbers(canvas: Canvas) { val count = (height / textSize).toInt() drawNumbers(canvas, count) }
其中都用了drawNumbers,其中的區(qū)別就是傳入的count值不一樣,這里的count代表文字的個(gè)數(shù)。所以重中之重就在于drawNumbers方法了
private fun drawNumbers(canvas: Canvas, count: Int) { if (count == 0) { postInvalidateDelayed(startOffset) } else { var offset = 0f for (i in 0 until count) { //生成隨機(jī)文字 val text = ((Math.random() * 9).toInt()).toString() //高亮文字顏色變高亮,否則就是一般顏色 if (hightLightNumIndex == i) { paint.color = hightLightColor paint.setShadowLayer(10f, 0f, 0f, hightLightColor) } else { paint.color = normalColor paint.setShadowLayer(10f, 0f, 0f, normalColor) } //繪制文字 canvas.drawText(text, 0f, textSize + offset, paint) offset += textSize } //找到下一個(gè)高亮數(shù)字的位置 if (!isShowAllNumber()) { hightLightNumIndex++ } else { hightLightNumIndex = (++hightLightNumIndex) % count } postInvalidateDelayed(100L) } }
關(guān)于怎么在Android中自定義View實(shí)現(xiàn)黑客帝國數(shù)字雨效果就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。