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数据库填充器的使用方法与技巧