Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin
Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"tools:context=".MainActivity"><com.myapp.MyViewandroid:id="@+id/mv"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/darker_gray" />
</RelativeLayout>
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.BitmapShader
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Path
import android.graphics.Shader
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.appcompat.widget.AppCompatImageViewclass MyView : AppCompatImageView {private var mPaint: Paint = Paint()private var mLinePaint: Paint = Paint()private var mPath: Path = Path()private var mPreX = 0fprivate var mPreY = 0fprivate var mRadius = 400fprivate var mBitmapShader: BitmapShader? = nullprivate val mResId = R.mipmap.pconstructor(ctx: Context, attributeSet: AttributeSet) : super(ctx, attributeSet) {//mPaint.style = Paint.Style.STROKE//mPaint.strokeWidth = 20fmLinePaint.style = Paint.Style.STROKEmLinePaint.strokeWidth = 5fmLinePaint.color = Color.REDval bmp = BitmapFactory.decodeResource(resources, mResId, null)mBitmapShader = BitmapShader(bmp, Shader.TileMode.CLAMP, Shader.TileMode.REPEAT)mPaint.setShader(mBitmapShader)}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)canvas.drawCircle(mPreX, mPreY, mRadius, mPaint)val pts = floatArrayOf(mPreX, mPreY - 50, mPreX, mPreY + 50, mPreX - 50, mPreY, mPreX + 50, mPreY)canvas.drawLines(pts, mLinePaint) //十字交叉线。}override fun onTouchEvent(event: MotionEvent): Boolean {when (event.action) {MotionEvent.ACTION_DOWN -> {mPath.moveTo(event.x, event.y)mPreX = event.xmPreY = event.yreturn true}MotionEvent.ACTION_MOVE -> {val endX = (mPreX + event.x) / 2val endY = (mPreY + event.y) / 2mPath.quadTo(mPreX, mPreY, endX, endY)mPreX = event.xmPreY = event.y}MotionEvent.ACTION_UP -> {}}postInvalidate()return super.onTouchEvent(event)}
}
当手指在屏幕上滑动时候,动态的以十字交叉线中心点为中心框选绘制圆:
下方开始repeat绘图,是因为BitmapShader的Y设置为REPEAT。
Android BitmapShader更简易的实现刮刮乐功能,Kotlin-CSDN博客文章浏览阅读312次,点赞6次,收藏12次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android Bitmap保存成至手机图片文件,Kotlin_android bitmap保存图片-CSDN博客。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。https://blog.csdn.net/zhangphil/article/details/145143789Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin_matrix drawbitmap android-CSDN博客文章浏览阅读1.1k次,点赞25次,收藏21次。需要注意的,因为在xml布局里面特别设置了ImageView的高度为wrap_content,手指在屏幕触点的位置是放大镜里面放大图片后准确圆心位置,但是,如果ImageView设置成match_parent,则因为ImageView里面的Bitmap被缩放(此处Bitmap其实小于ImageView,被拉伸了),拉伸后的Bitmap水平方向坐标与ImageView一直重合,但竖直方向,Bitmap坐标与ImageView不一致,会造成一种现象,手指触点放大镜放大后,水平方向是正确的,但竖直方向有偏移量。_matrix drawbitmap android
https://zhangphil.blog.csdn.net/article/details/135374279Android BitmapShader setLocalMatrix缩放Bitmap高度重新onMeasure,Kotlin_android setlocalmatrix-CSDN博客文章浏览阅读1.3k次,点赞22次,收藏17次。Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)附录文章1以xml布局文件方式实现了一个view在横竖屏切换时候的大小尺寸缩放,实现这种需求,也可以使用自定义View的onMeasure方法实现。遗留问题,手指在上图滑动过程中,当滑动到一定区域,下面的切图框中已无太有效的图可以“放大”,后续可以填充黑色,表示无效放大。所有的绘制轨迹线,都限定在了绿色的圆角矩形框中,超出区域不予绘制。基础上,限定下面切图的绘制区域,超出绿色区域的轨迹线不再绘制。_android setlocalmatrix
https://blog.csdn.net/zhangphil/article/details/135982934Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)_paint设置bitmap-CSDN博客文章浏览阅读788次,点赞11次,收藏8次。【代码】Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)_paint设置bitmap
https://blog.csdn.net/zhangphil/article/details/135508123
相关文章:
Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin
Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.…...
![](https://www.ngui.cc/images/no-images.jpg)
linux通过web向mac远程传输字符串,mac收到后在终端中直接打印。
要通过Web从Linux向Mac远程传输字符串,并在Mac的终端中直接打印,可以使用以下方法。这里假设Linux作为服务器,Mac作为客户端。 方法 1:使用Python的HTTP服务器 在Linux上启动一个简单的HTTP服务器,Mac通过curl获取字符…...
![](https://i-blog.csdnimg.cn/img_convert/178d0a9554474bf51dab67c1654bb01c.png)
海云安开发者安全智能助手D10荣膺 “ AI标杆产品 ” 称号,首席科学家齐大伟博士入选2024年度 “ 十大杰出青年 ”
2024年12月27日,粤港澳大湾区AI领袖峰会在深圳成功举办,大会表彰了在人工智能技术创新、应用实践和产业发展等方面取得优异成绩的企业和个人,深圳海云安网络安全技术有限公司开发者安全智能助手D10荣膺“AI标杆产品”称号。同时,公…...
![](https://i-blog.csdnimg.cn/direct/4a6da46db3864b02be0600926a228440.png)
Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并)
目录 引言 Apache POI操作Excel的实用技巧 1.合并单元格操作 2.设置单元格样式 1. 创建样式对象 2. 设置边框 3. 设置底色 4. 设置对齐方式 5. 设置字体样式 6.设置自动换行 7. 应用样式到单元格 3. 定位和操作指定单元格 4.实现标签-值的形式 5.列宽设置 1. 设…...
![](https://www.ngui.cc/images/no-images.jpg)
ReactiveSwift 简单使用
记录 ReactiveSwift 简单使用 导入 ReactiveSwift 库创建 TestViewModel 文件 enum JKTypeType: Int {case cloudcase devicecase weater }// 通过监听属性变化 class TestViewModel: NSObject {lazy var recordType: Property<JKTypeType> {return Property(recordTy…...
![](https://i-blog.csdnimg.cn/direct/4bf4c6c60bd346f091885dd6fa2a293b.png)
CSS 的基础知识及应用
前言 CSS(层叠样式表)是网页设计和开发中不可或缺的一部分。它用于描述网页的视觉表现,使页面不仅实现功能,还能提供吸引人的用户体验。本文将介绍 CSS 的基本概念、语法、选择器及其在提升网页美观性方面的重要性。 什么是 CSS&…...
![](https://i-blog.csdnimg.cn/direct/b3358810531c4697a3c6d69da65baa81.png)
【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)
目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显,发现可以打SSTI 本地起一个服务,折半查找fuzz黑名单,不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…...
![](https://i-blog.csdnimg.cn/img_convert/a3dfcb365a9ebcf922dc1467c5203618.png)
能源物联网数据采集设备 串口服务器功能参数介绍
摘要 随着物联网技术的快速发展,各种传统设备的联网需求愈发迫切。串口服务器作为一种桥接传统串口设备与现代网络的关键设备,在工业控制、智能电网、交通运输等域发挥了重要作用。本文以APort100串口服务器为例,探讨串口服务器在现代物联…...
![](https://i-blog.csdnimg.cn/direct/4ebfa7abea7b4881a71abd6c83a46ee1.png)
在线json格式化工具
在线json格式化工具,包括中文和英文版本,无需登录,无需费用,用完就走。 官网地址: https://json.openai2025.com 效果如下:...
![](https://i-blog.csdnimg.cn/direct/0bd25120d29540048c387828bf92a816.png)
OSPF的LSA的学习研究
OSPF常见1、2、3、4、5、7类LSA的研究 1、拓扑如图,按照地址表配置,激活OSPF划分相关区域并宣告相关网段 2、1类LSA,每台运行了OSPF的路由器都会产生,描述了路由器的直连接口状况和cost 可以看到R1产生了一条router lsa࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
1166 Summit (25)
A summit (峰会) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone. Now given a set of tenta…...
![](https://www.ngui.cc/images/no-images.jpg)
AUTOSAR从入门到精通-【自动驾驶】高精地图(四)
目录 前言 现状概述 算法原理 高精地图的构成 A.基础地图层 B.几何地图层 C.语义地图层 D.道路连接层 E.先验地图层 F.实时地图数据 高精地图的构建及维护 移动建图系统 高精地图维护 A.地图变换检测 B.地图数据更新 3. 众包建图 3.1 众包建图的优劣势 3.2 众包起源:M…...
![](https://i-blog.csdnimg.cn/img_convert/76567caf48c075d99d6631208490a3c5.png)
MySQL8数据库全攻略:版本特性、下载、安装、卸载与管理工具详解
大家好,我是袁庭新。 MySQL作为企业项目中的主流数据库,其5.x和8.x版本尤为常用。本文将详细介绍MySQL 8.x的特性、下载、安装、服务管理、卸载及管理工具,旨在帮助用户更好地掌握和使用MySQL数据库。 1.MySQL版本及下载 企业项目中使用的…...
![](https://i-blog.csdnimg.cn/direct/ba73663988f64cd9936de2cae8af24c2.png)
网络安全---CMS指纹信息实战
CMS简介 CMS(Content Management System)指的是内容管理系统,如WordPress、Joomla等。CMS系统非常常见,几乎所有大型网站都使用CMS来管理其网站的内容。由于常见CMS的漏洞较多,因此黑客将不断尝试利用这些漏洞攻击CMS…...
![](https://i-blog.csdnimg.cn/img_convert/4cb5e8a7c6b10b5b58c387a77a572c55.png)
基于C#实现对象序列化的3种方案
大家好!我是付工。 在上位机开发过程中,我们可能经常要实现一个数据对象的持久化,将对象保存到具体的文件中,今天给大家介绍常用的3种方案,大家根据实际情况,选择适合的方案。 一、准备工作 在介绍这4种…...
![](https://www.ngui.cc/images/no-images.jpg)
蓝桥杯真题 - 公因数匹配 - 题解
题目链接:https://www.lanqiao.cn/problems/3525/learning/ 个人评价:难度 2 星(满星:5) 前置知识:调和级数 整体思路 题目描述不严谨,没说在无解的情况下要输出什么(比如 n n n …...
![](https://i-blog.csdnimg.cn/img_convert/bfe56d39342795e258bf381ba3480442.png)
使用 Java 实现基于 DFA 算法的敏感词检测
使用 Java 实现基于 DFA 算法的敏感词检测 1. 引言 敏感词检测在内容审核、信息过滤等领域有着广泛的应用。本文将介绍如何使用 DFA(Deterministic Finite Automaton,确定有限状态自动机) 算法,在 Java 中实现高效的敏感词检测。…...
![](https://i-blog.csdnimg.cn/direct/d30e35efb98348ff98fc34cbe219f6ad.png)
Jenkins-Pipeline简述
一. 什么是Jenkins pipeline: pipeline在jenkins中是一套插件,主要功能在于,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程…...
![](https://i-blog.csdnimg.cn/direct/80528b7265154d778f5f69280287c35c.png)
Linux操作命令之云计算基础命令
一、图形化界面/文本模式 ctrlaltF2-6 图形切换到文本 ctrlalt 鼠标跳出虚拟机 ctrlaltF1 文本切换到图形 shift ctrl "" 扩大 ctrl "-" 缩小 shift ctrl "n" 新终端 shift ctrl "t" 新标签 alt 1,…...
![](https://www.ngui.cc/images/no-images.jpg)
【postgres】sqlite格式如何导入postgres数据库
step1 在ubuntu系统安装pgloader(centos系统难以直接通过yum安装,如果源码安装的话,会比较费劲) step2,执行如下python脚本 from pathlib import Path import subprocess dataset_dir Path(/app/sqlite_to_pg/chas…...
![](https://i-blog.csdnimg.cn/direct/f3ed4679796642f3ab3111874b567d63.jpeg)
阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能
在城市的脉络中,地下管网犹如隐秘的动脉,支撑着现代生活的运转。而在这庞大网络的关键节点上,阀井扮演着不可或缺的角色。然而,由于其密闭性和复杂性,阀井内部一旦发生可燃气体泄漏,将对公共安全构成严重威…...
![](https://i-blog.csdnimg.cn/img_convert/32a11288726027fba7cf78cb6f9777ae.png)
《offer 来了:Java 面试核心知识点精讲 -- 原理篇》
在 Java 面试的战场上,只知皮毛可不行,面试官们越来越看重对原理的理解。今天就给大家分享一本能让你在面试中脱颖而出的 “武林秘籍”——《offer 来了:Java 面试核心知识点精讲 -- 原理篇》。 本书详细介绍了Java架构师在BAT和移动互联网公…...
![](https://i-blog.csdnimg.cn/direct/e25a3bc8579847409d0a1b4c923799ff.png)
搭建一个基于Spring Boot的数码分享网站
搭建一个基于Spring Boot的数码分享网站可以涵盖多个功能模块,例如用户管理、数码产品分享、评论、点赞、收藏、搜索等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的数码分享平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …...
![](https://i-blog.csdnimg.cn/direct/dbb1a1d951724f91b345a6d4c2f1716f.png)
K210视觉识别模块
K210视觉识别模块是一款功能强大的AI视觉模块,以下是对其的详细介绍: 一、核心特性 强大的视觉识别功能:K210视觉识别模块支持多种视觉功能,包括但不限于人脸识别、口罩识别、条形码和二维码识别、特征检测、数字识别、颜色识别…...
![](https://i-blog.csdnimg.cn/direct/c65cc762dd7247d787bc74bb0c38b2f2.png)
JAVA:在IDEA引入本地jar包的方法(不读取maven目录jar包)
问题: 有时maven使用的jar包版本是最新版,但项目需要的是旧版本,每次重新install会自动将mavan的jar包覆盖到项目的lib目录中,导致项目报错。 解决: 在IDEA中手动配置该jar包对应的目录。 点击菜单File->Projec…...
![](https://www.ngui.cc/images/no-images.jpg)
存在重复元素(217)
217. 存在重复元素 - 力扣(LeetCode) class Solution { public:bool containsDuplicate(vector<int>& nums) {//stl sortsort(nums.begin(), nums.end());for (int i 0; i < nums.size() - 1; i) {if (nums[i] nums[i1]) {return true;}…...
![](https://i-blog.csdnimg.cn/direct/dc172e76f1754a56b36c82ba295bfa48.png)
聊聊如何实现Android 放大镜效果
一、前言 很久没有更新Android 原生技术内容了,前些年一直在做跨端方向开发,最近换工作用重新回到原生技术,又回到了熟悉但有些生疏的环境,真是感慨万分。 近期也是因为准备做地图交互相关的需求,功能非常复杂&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
linux 安装mysql5.6
下载mysql安装包 https://dev.mysql.com/downloads/mysql/5.6.html卸载系统自带的mariadb [rootgpap-prod-3 ~]# rpm -qa| grep mariadb mariadb-libs-5.5.68-1.el7.x86_64 [rootgpap-prod-3 ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 warning: /etc/my.cnf sav…...
![](https://i-blog.csdnimg.cn/direct/bd862f8a909d4417a4a56fbe6b68bc28.png)
【Vue3 入门到实战】3. ref 和 reactive区别和适用场景
目录 编辑 1. ref 部分 1.1 ref定义基本数据类型 1.2 ref 定义引用数据类型 2. reactive 函数 3. ref 和 reactive 对比 3.1 原理 3.2 区别 3.3 使用原则 在 Vue 3 中 ref 和 reactive 是用于创建响应式数据的两个核心函数。它们都属于 Composition API 的一部分&…...
![](https://i-blog.csdnimg.cn/direct/36cc0f3eb97746c28999732dbbeb33d4.png)
edge浏览器恢复旧版滚动条
1、地址栏输入edge://flags 2、搜索Fluent scrollbars.,选择disabled,重启即可...
![](https://img-blog.csdnimg.cn/img_convert/a7b6219b088cd36e4a2386c04ae0b7db.png)
ubuntu做网站服务器/网站推广优化外链
前言这几天拿到macbook就迫不及待的尝试了一下,刚开始前几天着实非常的不习惯。但是经过这几天的学习,感觉基本上掌握了其用法,马上就感觉这是一个生产代码、制作视频的利器。问过很多macbook的使用者都觉得用了很久不好用,安装的…...
![](http://www.ibm.com/i/c.gif)
买了域名之后怎么建设网站/百度关键词搜索排名查询
导读: 本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来…...
![](/images/no-images.jpg)
网站点击推广/百度一下官方入口
mysql主从结构下默认会在主上产生大量如mysql-bin*的log日志文件,这会消耗大量的硬盘空间。本篇文章主要介绍在保持MySQL主从复制的功能情况下清除bin log文件的方法。 1. 手动清除bin log文件 1.1 删除一段时间前的log mysql -u root -pmysql> purge master l…...
![](/images/no-images.jpg)
商业网站导航怎么做/创建网站教程
蓝桥杯 分巧克力 python 题目标题 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切…...
asp做微网站设计/想要网站导航正式推广
springboot启动读取外部配置文件 有时候项目打包成一个jar 或者war ,通过java -jar 命令运行springboot 项目,因为springboot 项目有自己的application.properties 配置文件,但是我们打完包之后,它也会打到包里边,倒是也能打开压缩…...
![](/images/no-images.jpg)
内蒙古建设厅门户网站/关键字排名优化工具
Aware XXXAware在Spring里表示对XXX可以感知,通俗点解释就是:如果在某个类里边想要使用spring的一些东西,就可以通过实现XXXAware接口告诉Spring, Spring看到后就会给你送过来,而接收的方式是通过实现接口唯一的方法se…...