当前位置: 首页 > news >正文

Android画布Canvas drawPath绘制跟随手指移动的圆,Kotlin

Android画布Canvas drawPath绘制跟随手指移动的圆,Kotlin

 

 

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Path
import android.os.Bundle
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatImageViewclass MainActivity : AppCompatActivity() {private var image: MyImage? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)image = findViewById(R.id.image)}
}class MyImage : AppCompatImageView {private var mIsDraw = falseprivate var curX: Float? = 0fprivate var curY: Float? = 0fconstructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {}override fun onTouchEvent(event: MotionEvent?): Boolean {when (event?.actionMasked) {MotionEvent.ACTION_DOWN -> {mIsDraw = true}MotionEvent.ACTION_MOVE -> {curX = event?.xcurY = event?.yinvalidate()}MotionEvent.ACTION_UP -> {mIsDraw = false}}return true}override fun draw(canvas: Canvas) {super.draw(canvas)if (mIsDraw) {myDraw(canvas)}}private fun myDraw(canvas: Canvas) {val path = Path()val radius = 250fval paint = Paint(Paint.ANTI_ALIAS_FLAG)paint.color = Color.REDpaint.style = Paint.Style.STROKEpaint.strokeWidth = 20fpath.addCircle(curX!!, curY!!, radius, Path.Direction.CW)canvas.drawPath(path, paint)}
}

 

 

49438d74d92c4fa6931f5ca8d850b775.png

 

 

 

 

 

Android SurfaceView简例-CSDN博客文章浏览阅读2.3k次。Android SurfaceView简例Android中各的SurfaceView和View有很大的不同,两者应用场景不同。大多数View能做的事情SurfaceView也可以,但是SurfaceView效率更高。Android的View绘制过程由Android系统控制,刷新机制开发者比较难以控制。而SurfaceView支持高频、多线程绘制。SurfaceView不存在是否在Android Uhttps://blog.csdn.net/zhangphil/article/details/77961909

 

相关文章:

  • Springcloud Alibaba 使用Canal将MySql数据实时同步到Elasticsearch
  • Git三种方法从远程仓库拉取指定分支
  • Leetcode 2971. Find Polygon With the Largest Perimeter
  • C#实现串口通讯
  • Unity Shader 实现X光效果
  • 【Qt-Event-信号和槽】
  • go 语言程序设计第2章--程序结构
  • JS-图片预览
  • 图论 | 网络流的基本概念
  • elasticsearch系列四:集群常规运维
  • WEB 3D技术 three.js 色彩空间讲解
  • Vuex介绍2
  • 基于openGauss5.0.0全密态数据库等值查询小案例
  • Easy Excel 学习
  • burp sutie xss 原理及使用
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • create-react-app项目添加less配置
  • Laravel 中的一个后期静态绑定
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Rancher-k8s加速安装文档
  • Vue.js-Day01
  • 飞驰在Mesos的涡轮引擎上
  • 工作手记之html2canvas使用概述
  • 跨域
  • 那些年我们用过的显示性能指标
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 网络应用优化——时延与带宽
  • 我的面试准备过程--容器(更新中)
  • 在weex里面使用chart图表
  • Hibernate主键生成策略及选择
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​插件化DPI在商用WIFI中的价值
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #pragma预处理命令
  • #stm32整理(一)flash读写
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (LeetCode) T14. Longest Common Prefix
  • (六)vue-router+UI组件库
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (推荐)叮当——中文语音对话机器人
  • (转)iOS字体
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .Net 中Partitioner static与dynamic的性能对比
  • .NetCore 如何动态路由
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET上SQLite的连接
  • /var/spool/postfix/maildrop 下有大量文件