技术标签: view android 水波纹 自定义 安卓自定义控件 点击
代码:
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
/**
* Created by hwk on 2020/5/18.
*/
public class MyView extends View {
private Paint paintPoint;//圆心
private Paint paintWave;//波浪
private float x, y;//画圆中心点坐标
private int radiusPoint;//圆心直径
private int radiusWave;//波浪直径
private int alphaWave;//波浪透明度常量
public MyView(Context context) {
super(context);
initPaint();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint();
}
private void initPaint() {
paintPoint = new Paint();
paintPoint.setStyle(Paint.Style.FILL);
paintPoint.setColor(Color.parseColor("#FF0000"));
paintPoint.setAntiAlias(true);
paintPoint.setStrokeWidth(radiusPoint / 2);
paintWave = new Paint();
paintWave.setStyle(Paint.Style.FILL);
paintWave.setColor(Color.parseColor("#BBCFFC"));
paintWave.setAntiAlias(true);
paintWave.setStrokeWidth(radiusWave / 2);
paintWave.setAlpha(alphaWave);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
radiusPoint = 30;
radiusWave = 30;
alphaWave = 255;
//获取点击的坐标位置
x = event.getX();
y = event.getY();
flushPaint();
break;
}
return super.onTouchEvent(event);
}
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
flushPaint();
}
};
private void flushPaint() {
radiusPoint = radiusPoint - 2;
radiusWave = radiusWave + 3;
alphaWave = alphaWave - 20;
if (alphaWave <= 25) {
alphaWave = 0;
radiusPoint = 30;
paintWave.setStrokeWidth(radiusWave / 2);
paintWave.setAlpha(alphaWave);
paintPoint.setStrokeWidth(radiusPoint / 2);
paintPoint.setAlpha(0);
invalidate();
} else {
paintWave.setStrokeWidth(radiusWave / 2);
paintWave.setAlpha(alphaWave);
paintPoint.setStrokeWidth(radiusPoint / 2);
paintPoint.setAlpha(255);
invalidate();
handler.sendEmptyMessageDelayed(0, 35);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, radiusWave, paintWave);
canvas.drawCircle(x, y, radiusPoint, paintPoint);
}
}
OpenCASCADE:形状愈合之概述介绍使用示例缺少接缝边缘的面线方向错误自相交线缺乏优势工具包结构查询状态介绍本手册解释了如何使用形状修复。它提供了有关其操作的基本文档。在外形修复工具包提供了一套工具来对开放CASCADE技术(的几何和拓扑工作OCCT)的形状。形状修复调整形状,使它们尽可能适合 Open CASCADE 技术使用。使用示例以下是一些典型问题的示例,并附有形状修复如何处理这些问题的插图:缺少接缝边缘的面问题:周期性表面上的面受到绕表面完整行程的电线的限制。这些线在 3d 中
数据集为fsd-10花样滑冰,项目为ACGN-2S动作识别,可直接运行,acc为0.57
1、为什么会有这个需求呢?(1)因为有个项目想要在地图叠加2.5D厂区平面图,所以就选择了geoserver来发布服务;2、实现中需要解决的问题:2.1 一张jpg图片如何用geoserver来发布服务呢?(1)首先发布服务的数据源应该至少包括两种数据源:矢量数据源和栅格数据源。那么JPG格式图片,能不能向这两种数据源靠近呢?(2)经过查询资料,利用arcgis软件可以将JPG格式的图片...
控制QLineEdit的输入范围1.使用正则表达式检验QLineEdit的输入范围(代码如下):#include &lt;qvalidator.h&gt;#include &lt;qlineedit.h&gt;QLineEdit *lineEdit = new QLineEdit(this);QRegExp regExp("[A-Za-z][1-9][0-9]{0...
import java.大道至简第一章.*;package 编程的精义;public class 编程的精义{public static void 愚公(){System.out.println("愚公移山");--山;}public static void 子(){System.out.println("子移山");--山;}public static void 孙(){System.out.p...
需要些xml文件的。参考路径:http://blog.csdn.net/lmdcszh/article/details/13774947
【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会https://gitee.com/blaunicorn/node-vue-wangzherongyao持续更新中…2.10 英雄管理,比较复杂的英雄编辑页面2.10.1 admin端Main.vue中创建英雄列表组(admin\src\views\Main.vue) <el-menu-item-group>
笔者最近因为工作需要将TensorFlow训练模型迁移到晟腾芯片平台上离线推理,所以需要将ckpt或者h5模型冻结成pb,再利用ATC模型转换工具将pb转为离线模型om文件,期间遇到一些问题和坑,总结一下,供大家参考。1.Tensorflow1.x训练好的模型Ckpt文件:DB_resnet_v1_50_adam_model.ckpt-16801.indexDB_resnet_v1_50_adam_model.ckpt-16801.data-00000-of-00001DB_resnet_v1_5
之前使用rowid分片同步一个200G的表,天哪不提时间用了几天,使用oracle,当你感觉不靠谱的时候估计是真不靠谱。本文从表的索引字段着手。本文前提是生产库根本放不下你expdp的dmp文件,否则谁还会用着慢如蜗牛的分片方式,实在是被逼无奈,一个市局才那么大点生产的环境,不解,不过这也是asm害的,集成工程师都会觉得本机不需要那么大的空间,足够归档转存就够了说这么多就是为了向描述这...
Android 去除顶部导航栏的几种方法、去除顶部时间和电量
使用IDEA运行时出现HTTP status 500-Internal Server Error 的错误Type Exception ReportDescription The server encountered an unexpected condition that prevented it from fulfilling the request.Exceptionjava.lang...
文章目录什么是PO模型PO优点:PO的核心实例什么是PO模型PO模型全称:Page Object(思想与面向对象的特征相同),也叫PO设计模式。他的出现主要是为了解决自动化测试中代码量增加而难以维护。PO的优点:代码复用,可读性强,可维护性强个人理解:就是将重复的代码封装,复用。还有就是,如果应用后期修改UI界面学要重新定位元素,会非常的方便(例:那web端自动化selenium来说,重复性操作有,八大定位元素,点击,获取新的句柄,多表单等,可以将这些webdriver的操作封装到一个类中,需要