Android自定义组件跟随自己手指主动画圆

作者:yangykaifa 时间:2022-03-11 10:01:48 

本文实例为大家分享了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);
}
}

效果:

Android自定义组件跟随自己手指主动画圆

除此之外:

还能够用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,画圆
0
投稿

猜你喜欢

  • Java中switch的三种用法方式小结

    2023-11-24 03:40:21
  • C#根据前台传入实体名称实现动态查询数据

    2021-06-17 09:28:43
  • SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法

    2023-11-01 16:03:39
  • Sharding-Proxy基本功能用法介绍

    2021-10-17 06:41:03
  • 19款Javascript富文本网页编辑器

    2021-12-08 23:48:45
  • Spring Boot实现Undertow服务器同时支持HTTP2、HTTPS的方法

    2021-09-23 17:02:30
  • Android 个人理财工具四:添加账单页面 下

    2021-09-05 00:43:59
  • java求数组元素重复次数和java字符串比较大小示例

    2023-08-04 22:20:02
  • Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例

    2021-09-07 14:45:17
  • 详解SpringBoot中Session超时原理说明

    2022-01-24 06:40:49
  • Java 用反射设置对象的属性值实例详解

    2023-11-26 03:56:51
  • 详解APP微信支付(java后台_统一下单和回调)

    2023-11-10 17:26:42
  • C#语法糖(Csharp Syntactic sugar)大汇总

    2022-12-04 12:55:23
  • 详解C#对XML、JSON等格式的解析

    2022-06-04 22:45:50
  • IDEA内存调试插件(好用)

    2022-04-19 08:51:13
  • Netty分布式Future与Promise执行回调相关逻辑剖析

    2021-08-18 23:33:50
  • 如何基于Java实现对象List排序

    2022-01-28 03:59:16
  • 一文带你探究Spring中Bean的线程安全性问题

    2023-10-03 10:52:13
  • 基于Flutter实现图片选择和图片上传

    2023-07-06 04:28:50
  • 在mybatis中使用mapper进行if条件判断

    2023-08-01 08:09:34
  • asp之家 软件编程 m.aspxhome.com