import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class Mouseview extends View {
public float currentX1 = 0;
public float currentY1 = 0;
public float x1 = 0;
public float y1 = 0;
public float x2 = 0;
public float y2 = 0;
public float radios = 0;
private Bitmap bitmap;
private OnSlidingDirectionListener onSlidingDirectionListener;
public Mouseview(Context context) {
super(context);
}
public Mouseview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Mouseview(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
// Paint p = new Paint();
// p.setColor(Color.RED);
// if (bitmap != null) {
// int height = bitmap.getHeight();
// int width = bitmap.getWidth();
// //位置画在图片的中心
// canvas.drawBitmap(bitmap, currentX1 - height / 2, currentY1 - width / 2, p);
// }
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//可以设置个图标 暂时不要
// bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_remote);
this.currentX1 = event.getX();
this.currentY1 = event.getY();
this.x1 = event.getX();
this.y1 = event.getY();
// invalidate();
break;
case MotionEvent.ACTION_MOVE:
this.currentX1 = event.getX();
this.currentY1 = event.getY();
// invalidate();
break;
case MotionEvent.ACTION_UP:
//计算是横向滑动还是纵向滑动
x2 = event.getX();
y2 = event.getY();
float distanceY = Math.abs(Math.abs(y1) - Math.abs(y2));
float distanceX = Math.abs(Math.abs(x1) - Math.abs(x2));
if (y1 - y2 > 30 && distanceY > distanceX) {
System.out.println("---------------->向上滑");
onSlidingDirectionListener.up();
} else if (y2 - y1 > 30 && distanceY > distanceX) {
System.out.println("---------------->向下滑");
onSlidingDirectionListener.down();
} else if (x1 - x2 > 30 && distanceY < distanceX) {
System.out.println("---------------->向左滑");
onSlidingDirectionListener.left();
} else if (x2 - x1 > 30 && distanceY < distanceX) {
System.out.println("---------------->向右滑");
onSlidingDirectionListener.right();
} else {
onSlidingDirectionListener.ok();
}
//回收bitmap
// bitmap.recycle();
// bitmap = null;
// invalidate();
break;
}
return true;
}
public void setMoveListener(OnSlidingDirectionListener onSlidingDirectionListener) {
this.onSlidingDirectionListener = onSlidingDirectionListener;
}
public interface OnSlidingDirectionListener {
void up();
void down();
void left();
void right();
void ok();
}
}
相关推荐
从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)
使用stm32搭载lwip实现HTTPd服务器
android 方向控件 MenuView 上下左右,东南西北
参考代码 原文链接:https://blog.youkuaiyun.com/qq_29194615/java/article/details/105809980 控件样式: 源代码:RoundMenuView .java package com.codecandy.views; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import an...
eMMC数据擦除的方式
接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。
Android笔记--自定义控件仿遥控器的圆形上下左右OK圆盘按钮
上面就是几张预览图!代码在最底下 主要就两个步骤,画图、监听点击 1、整个控件基本上是一步步画出来的,重写onDraw方法开始for循环画扇形出来,画扇形的时候同时画扇形内的图标,扇形画完了之后画中心圆按钮,中心画了圆之后吧OK按钮画上。 2、重写onTouch方法监听手指触发的位置,根据按下的位置确定按钮在哪个扇形的范围上,然后重绘一下onDraw把按下的灰色背景绘制出来。难点在于如何确定
【backtrader保姆级教学】投资组合回测
method1:探索投资组合的最有方案,使用蒙特卡洛模拟Markowitz模型。# 提取最小波动组合对应的权重, 并转换成Numpy数组。# 绘制收益-标准差的散点图,并用颜色描绘夏普比率。# 在收益-风险散点图中突出风险最小的点。:param any_day: 任意日期。# 将该点坐标显示在图中并保留四位小数。password = “替换密码”# 找到标准差最小数据的索引值。user = “替换账号”# 计算GMV投资组合收益。# 计算每项资产的夏普比率。# 设置无风险回报率为0。
学Simulink——基于Simulink的Buck-Boost变换器双闭环PI+抗饱和设计建模示例
本文详细介绍了基于Simulink的非反相Buck-Boost变换器双闭环控制设计方法。针对Buck-Boost变换器特有的右半平面零点(RHPZ)和控制挑战,提出了电压-电流双闭环PI控制架构,并集成抗积分饱和机制。通过Simulink建模,实现了主电路、电流内环PI、电压外环PI、PWM及占空比限幅等模块的搭建,验证了在输入电压跌落(20V→10V)和负载突变(2A→4A)等场景下的稳定性能。仿真结果表明,输出电压波动小于0.35V,恢复时间快于1ms,电感电流有效限幅。文章还讨论了工程实践要点和扩展方
android 上下控制方向盘_Android自定义控件实现方向盘效果
在很多开发中,为了界面更加的友好,在自定义View的基础上,开发者会开发出各种各样的自定义控件来满足实际开发需要,其中有一种”方向盘”的控件在实际开发中非常常见,便于用户进行一些实际性的方向控制。在复习参考了许多自定义控件的基础上,我实现了一个最最基本的方向盘空间,并且可以根据方向做出相应的反应。话不多说,先看看效果。做的有点丑,大家可以看看实际原理,后期再优化具体“方向盘”.空间下面的几行字是我...
SAP-MM-采购过账接口(与WMS集成)-代码
1、判断传入值非空检验; 2、判断过账日期是否允许在当前期间; 3、判断是否为集采订单业务,是否审批完成; 4、判断是否发布标准成本发布(此业务场景与价格控制3+S有关) 5、保存日志表; 6、判断业务公司订单审批状态; 7、创建STO交货单、集采公司订单过账、STO公司间创建交货单、交货单过账(两步法)、过账失败回滚(冲销交货、删除交货单、冲销集采入库)
android随笔之HID设备遥控
android随笔之HID设备遥控
20、Citrix 云桌面常见VDA注册问题汇总
本文总结了与 VDA 中出现的 VDA 会话断开连接、注册、会话卡住以及挂起/崩溃相关的主要支持文章。
IEC 61400-1:2019 附录 C 湍流模型全面解读
IEC 61400-1:2019 附录 C 全面解读
电脑装windows和安卓双系统引导_Remix mini安卓电脑,玩的不只是Windows那张皮
个人电脑发展几十年以来,台式机一直以其强劲的性能,良好的散热和扩展性,为大多数公司和家庭的首选,尽管随着半导体技术的发展,台式机也在向小型化发展,然而在本质上并没有什么变化,突破性的革命尚未到来,而在此之前,平板电脑和智能手机等泛PC设备高速发展,将PC的功能延展到移动终端,IOS和安卓的生态由此拥有了广泛的用户基础,虽然近年微软也在大力推广跨平台的Windows10系统,但收效甚微,反观安卓系统...
华为OD机试 - 魔法收积木 - 二进制(Java 新系统 200分)
华为OD机试 新系统 题库疯狂收录中,刷题。
Android Metro风格的Launcher开发系列第一篇
目录 首先要做的事情是环境搭建 Launcher设计 前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用。但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的目的开始写一个系列的文章,我会把我做一个项目的详细过程分享给大家,供大家参考和交流。好了...
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
【转载】Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用。但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的目的开始写一个系列的文章,我会把我做一个项目的详细过程分享给大家,供大家参考和交流。好了,评书开讲!可能大家做Android机顶盒或者Android电视开发的比较少,这类开发基本上都是基于源码的...
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
[转载] Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用。但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的目的开始写一个系列的文章,我会把我做一个项目的详细过程分享给大家,供大家参考和交流。好了,评书开讲! 可能大家做Android机顶盒或者Android电视开发的比较少,这类开发基本上都是基于源码的开...
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
Android Metro风格的Launcher开发系列第一篇(转)
可能大家做Android机顶盒或者Android电视开发的比较少,这类开发基本上都是基于源码的开发,大家有一个git版本库,大家开发完了编译出来一个版本烧到板子上跑,要编译肯定就要编译环境什么的,google推荐的是在Ubuntu系统上搭建开发和编译环境。 首先要做的事情是环境搭建: 大家可以装双系统或者用Oracle VM VirtualBox在Windows...
5932



被折叠的 条评论
为什么被折叠?



