Android自定义组件跟随自己手指主动画圆
发布时间 - 2026-01-11 02:29:35 点击率:次本文实例为大家分享了Android实现跟随手指画圆的具体代码,供大家参考,具体内容如下

首先自己定义一个View子类:
package com.example.androidtest0.myView;
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;
public class DrawView extends View {
public float currentX = 40;
public float currentY = 50;
//定义、并创建画笔
Paint p = new Paint();
public DrawView(Context context) {
super(context);
}
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画笔的颜色
p.setColor(Color.RED);
//绘制一个小球
canvas.drawCircle(currentX, currentY, 15, p);
}
/**
* 为该组件的触碰事件重写事件处理方法
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
//改动currentX、currentY两个属性
currentX = event.getX();
currentY = event.getY();
//通知当前组件重绘自己
invalidate();
return true;
}
}
主界面XML:
custom_layout.xml
<?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" android:id="@+id/root" android:orientation="vertical" > </LinearLayout>
主activity:
package com.example.androidtest0;
import com.example.androidtest0.myView.DrawView;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
public class CustomView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_layout);
//获取布局文件里LinearLayout容器
LinearLayout root = (LinearLayout)findViewById(R.id.root);
//创建DrawView组件
final DrawView drawView = new DrawView(this);
//设置自己定义组件的最小宽度、高度
drawView.setMinimumWidth(10);
drawView.setMinimumHeight(10);
root.addView(drawView);
}
}
效果:
除此之外:
还能够用XML的方式:也是首先建一个View的子类。和上面一样。
然后主界面XML例如以下:
<?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"
android:id="@+id/root"
android:orientation="vertical" >
<com.example.androidtest0.myView.DrawView
android:layout_width="match_parent" android:layout_height="match_parent"
/>
</LinearLayout>
主activity文件例如以下:
package com.example.androidtest0;
import com.example.androidtest0.myView.DrawView;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
public class CustomView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_layout);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 跟随手指
# 画圆
# 利用Android画圆弧canvas.drawArc()实例详解
# Android自定view画圆效果
# Android自定义View画圆功能
# Android项目实战手把手教你画圆形水波纹loadingview
# Android圆形控件实现画圆效果
# 子类
# 还能
# 重写
# 大家分享
# 具体内容
# 大家多多
# 为该
# 触碰
# currentY
# super
# context
# currentX
# public
# MotionEvent
# DrawView
# float
# extends
# RED
# setColor
# drawCircle
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
图册素材网站设计制作软件,图册的导出方式有几种?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
浅谈redis在项目中的应用
Python结构化数据采集_字段抽取解析【教程】
如何续费美橙建站之星域名及服务?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
Laravel如何处理文件下载请求?(Response示例)
Laravel如何创建自定义Artisan命令?(代码示例)
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
Laravel如何使用Blade组件和插槽?(Component代码示例)
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何快速配置高效服务器建站软件?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Laravel如何自定义错误页面(404, 500)?(代码示例)
中国移动官方网站首页入口 中国移动官网网页登录
电商网站制作价格怎么算,网上拍卖流程以及规则?
微信小程序 wx.uploadFile无法上传解决办法
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
黑客如何通过漏洞一步步攻陷网站服务器?
如何正确下载安装西数主机建站助手?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
开心动漫网站制作软件下载,十分开心动画为何停播?
如何用花生壳三步快速搭建专属网站?
独立制作一个网站多少钱,建立网站需要花多少钱?
北京的网站制作公司有哪些,哪个视频网站最好?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Bootstrap CSS布局之列表
Laravel如何使用Service Container和依赖注入?(代码示例)
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel Session怎么存储_Laravel Session驱动配置详解
简历没回改:利用AI润色让你的文字更专业
焦点电影公司作品,电影焦点结局是什么?
制作企业网站建设方案,怎样建设一个公司网站?
js实现点击每个li节点,都弹出其文本值及修改
Linux系统运维自动化项目教程_Ansible批量管理实战
java中使用zxing批量生成二维码立牌
如何快速登录WAP自助建站平台?
JavaScript如何实现继承_有哪些常用方法
如何用低价快速搭建高质量网站?
JavaScript Ajax实现异步通信
历史网站制作软件,华为如何找回被删除的网站?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧

