当我按下按钮并尝试在 SurfaceView 上绘制一条黄线时,屏幕上会出现一些随机混乱。 如何以最快的方式正确访问手机屏幕,并在应用程序中在其上绘制线条、矩形和其他基本形状?
我使用代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mylinearlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MY BUTTON"
android:id="@+id/mybutton"
/>
<SurfaceView
android:id="@+id/mysurfaceview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
tools:context=".MainActivity"/>
</LinearLayout>
和
package com.example.myapp
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.graphics.Color
import android.graphics.Paint
import android.view.SurfaceView
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val sv=findViewById<SurfaceView>(R.id.mysurfaceview)
val b=findViewById<Button>(R.id.mybutton)
b.setOnClickListener() {
val mycanvas=sv.holder.lockCanvas()
val mypaint= Paint()
mypaint.setColor(Color.YELLOW)
mypaint.isAntiAlias=true
mypaint.strokeWidth=5f
mypaint.style=Paint.Style.FILL
mycanvas.drawLine(20f,20f,450f,520f,mypaint)
sv.holder.unlockCanvasAndPost(mycanvas)
}
}
}
产生这个: