Android自定义View圆形和拖动圆、跟随手指拖动效果
发布时间 - 2026-01-11 03:17:17 点击率:次单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可

我在第一次自定义View圆遇到的几个Bug:
1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了
2.我在定义充满属性match_parent的时候运行会报错,什么方法都用了就是不行,耐心等待过一会就好了…有可能是studio没来得及编译过来
下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承View 实现onDraw方法
public class CustomView extends View {
//创建point对象 参数为x坐标和y坐标
private PointF point = new PointF(100, 100);
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//参数为圆的横坐标 ,纵坐标,半径,创建
canvas.drawCircle(point.x,point.y, 50, new Paint());
}
}
XML里、自己定义的view类的名字:
<ydtx.bwie.com.xiangmu_project02.CustomView android:layout_width="match_parent" android:layout_height="match_parent" />
一个圆就这样创建好了 直接运行就可以了 ManActivity里什么也不用改
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
下面是添加拖动圆的功能 非常简单 实现触摸监听即可 代码非常少 如下:
public class CustomView extends View {
//创建point对象 参数为x坐标和y坐标
private PointF point = new PointF(100, 100);
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//参数为圆的横坐标 ,纵坐标,半径,创建
canvas.drawCircle(point.x,point.y, 50, new Paint());
}
//触摸事件
@Override
public boolean onTouchEvent(MotionEvent event) {
//获得触摸事件
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
//ACTION_MOVE不要设置break,否则圆形不会跟随手指活动 只会手指松开屏幕的时候圆形直接到了屏幕停止的位置
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
//获取手指触摸位置的x坐标
point.x = event.getX();
//获取手指触摸位置的y坐标
point.y = event.getY();
//启动
postInvalidate();
break;
}
return true;
}
}
总结
以上所述是小编给大家介绍的Android自定义View圆形和拖动圆、跟随手指拖动效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 自定义view
# 圆形
# 拖动
# Android实现ImageView图片缩放和拖动
# Android实现跟随手指拖动并自动贴边的View样式(实例demo)
# Android自定义View实现拖动选择按钮
# Android实现单页面浮层可拖动view的一种方法
# Android通过自定义ImageView控件实现图片的缩放和拖动的实现代码
# Android开发实现可拖动排序的ListView功能【附源码下载】
# Android DragImageView实现下拉拖动图片放大效果
# Android RecyclerView滑动删除和拖动排序
# Android ViewDragHelper仿淘宝拖动加载效果
# android实现可拖动的浮动view
# 自定义
# 我在
# 创建一个
# 小编
# 就好了
# 几个
# 就会
# 如果你
# 好了
# 就像
# 有可能
# 在此
# 只会
# 用了
# 给大家
# 只需要
# 几步
# 报错
# 它能
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
公司门户网站制作流程,华为官网怎么做?
Laravel如何处理CORS跨域请求?(配置示例)
Laravel如何处理表单验证?(Requests代码示例)
如何获取免费开源的自助建站系统源码?
如何在建站宝盒中设置产品搜索功能?
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
文字头像制作网站推荐软件,醒图能自动配文字吗?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Python结构化数据采集_字段抽取解析【教程】
再谈Python中的字符串与字符编码(推荐)
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Python正则表达式进阶教程_复杂匹配与分组替换解析
网站建设要注意的标准 促进网站用户好感度!
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
nginx修改上传文件大小限制的方法
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
C++用Dijkstra(迪杰斯特拉)算法求最短路径
WordPress 子目录安装中正确处理脚本路径的完整指南
如何在建站之星绑定自定义域名?
如何在阿里云完成域名注册与建站?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
JavaScript如何实现路由_前端路由原理是什么
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
如何快速搭建高效WAP手机网站吸引移动用户?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在云虚拟主机上快速搭建个人网站?
如何确认建站备案号应放置的具体位置?
Laravel如何保护应用免受CSRF攻击?(原理和示例)
如何在新浪SAE免费搭建个人博客?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
Laravel如何处理异常和错误?(Handler示例)
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
Laravel怎么清理缓存_Laravel optimize clear命令详解
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
EditPlus中的正则表达式 实战(2)
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
高端建站如何打造兼具美学与转化的品牌官网?
如何用PHP工具快速搭建高效网站?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?

