找到匹配的单词时如何做Android Canvas drawText弹出动画

问题描述

我正在开发小型2D游戏。我已经使用画布创建了自定义网格控件,并将其添加到了主活动中。下面是我放置自定义控件的主要活动代码
     <com.ABC.Test.view.custom.BoardView
            android:id="@+id/BoardView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/btnLayout"
            android:layout_centerHorizontal="true" />

这是我的用户界面设计图片 [画布网格] [1] [1]:https://i.stack.imgur.com/3pLXs.png 当用户单击网格中的任何单元格并输入任何字母时,两者都会创建一些拼写。如果它与预定义的拼写列表匹配,则应弹出在屏幕上进行的拼写,并创建该拼写的移动效果,该效果从网格移动到玩家1按钮。

下面是我的Kotlin代码

override fun onDraw(canvas: Canvas) {
        updateMeasurements(width)
        fillCells(canvas)
        drawLines(canvas)
        drawText(canvas)
    }

 private fun fillCells(canvas: Canvas) {
        cells?.forEach {
            val r = it.row
            val c = it.col
            val bgColor: Paint = Paint().apply {
                style = Paint.Style.FILL_AND_stroke
                color = Color.parseColor("#6ead3a")
            }
     
            if ((selectedRow != -1 && selectedCol != -1) && it.isFreezed) {
                //bgColor = it.bgFreezColor
                bgColor.color = it.myColor
                bgColor.style = Paint.Style.FILL_AND_stroke
                fillCell(canvas,r,c,bgColor)
            } else if (r == selectedRow && c == selectedCol) {
                fillCell(canvas,selectedCellPaint)
            }
        }
    }


private fun drawText(canvas: Canvas) {
        
        cells?.forEach { cell ->
            val value = cell.value
            val row = cell.row
            val col = cell.col
            val valueString = cell.value
        
            var paintToUse = if (cell.isstartingCell) startingCellTextPaint else textPaint
            val textBounds = Rect()
            paintToUse.getTextBounds(valueString,valueString.length,textBounds)
            var textWidth = paintToUse.measureText(valueString)
            val textHeight = textBounds.height()
            var xCord = (col * cellSizePixels) + cellSizePixels / 2 - textWidth / 2
            val yCord = (row * cellSizePixels) + cellSizePixels / 2 + textHeight / 2
            if (cell.isFreezed) {
                canvas.drawText(valueString,xCord,yCord,paintToUse)
            } else if (selectedRow == row && selectedCol == col) {
                canvas.drawText(valueString,(col * cellSizePixels) + cellSizePixels / 2 - textWidth / 2,(row * cellSizePixels) + cellSizePixels / 2 + textHeight / 2,paintToUse)
            } else {
                cell.value = ""
                canvas.drawText("",paintToUse)
            }
        }

    }

如何在画布drawText上创建弹出和移动效果

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...