欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发实例(跟随手指动的小球)

程序员文章站 2022-05-01 19:16:55
创建自定义组件这里创建了自定义组件,并重写了onDraw()和onTouchEvent()方法。前者的功能是绘制一个红色的小球。后者的功能是当点击屏幕事件发生时,更新小球的坐标,并重新绘制。package com.example.mydefineviewimport android.content.Contextimport android.graphics.Canvasimport android.graphics.Colorimport android.graphics.Painti...

创建自定义组件

这里创建了自定义组件,并重写了onDraw()onTouchEvent()方法。
前者的功能是绘制一个红色的小球。
后者的功能是当点击屏幕事件发生时,更新小球的坐标,并重新绘制。

package com.example.mydefineview import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.util.AttributeSet import android.view.MotionEvent import android.view.View import java.util.jar.Attributes class ball(context: Context, attrs:AttributeSet):View(context, attrs){ private var currentX = 0f private var currentY = 0f //定义并创建画笔 private var p:Paint = Paint() //当该组件绘制其内容时调用 override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) //设置画笔颜色 p.setColor(Color.RED) //绘制一个小圆 canvas?.drawCircle(currentX, currentY, 15F, p) } override fun onTouchEvent(event: MotionEvent?): Boolean { event?.run { currentX = getX() currentY = getY() } //通知当前组件重绘自己,调用onDraw()函数 invalidate() return true } } 

布局文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.mydefineview.ball android:id="@+id/ball" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

在布局文件中加入该自定义View。

对应的代码文件

仅仅是加载对应的布局文件而已

package com.example.mydefineview import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } 

本文地址:https://blog.csdn.net/weixin_42708161/article/details/107759643