Android画布Canvas绘图scale translate,Kotlin

Android画布Canvas绘图scale & translate,Kotlin

 

13cc497051ac4dc58596ebf28f4c0931.png

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/darker_gray"android:orientation="vertical"app:divider="@android:drawable/divider_horizontal_bright"app:dividerPadding="5dp"app:showDividers="beginning|middle|end"><ImageViewandroid:id="@+id/iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background"android:scaleType="fitCenter"android:src="@mipmap/pic" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/iv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /><ImageViewandroid:id="@+id/iv2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/iv3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /><ImageViewandroid:id="@+id/iv4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /></LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>

 

 

import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.drawable.BitmapDrawable
import android.os.Bundle
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launchclass MainActivity : AppCompatActivity() {private var iv: ImageView? = nullprivate var iv1: ImageView? = nullprivate var iv2: ImageView? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)iv = findViewById(R.id.iv)iv1 = findViewById(R.id.iv1)iv2 = findViewById(R.id.iv2)lifecycleScope.launch(Dispatchers.Main) {delay(500)f1()f2()}}private fun f1() {val bitmap = ((iv?.drawable as BitmapDrawable).bitmap.copy(Bitmap.Config.ARGB_8888, true))val canvas = Canvas(bitmap)val left = 50fval top = 200fcanvas.scale(0.5f, 0.3f)canvas.translate(left, top)canvas.drawBitmap(bitmap, left, top, null)iv1?.setImageBitmap(bitmap)}private fun f2() {val bitmap = ((iv?.drawable as BitmapDrawable).bitmap.copy(Bitmap.Config.ARGB_8888, true))val canvas = Canvas(bitmap)val left = 50fval top = 200fcanvas.scale(0.8f, 0.2f)canvas.translate(left, top)canvas.drawBitmap(bitmap, left, top, null)iv2?.setImageBitmap(bitmap)}
}

 

 

 

Android画布Canvas绘图scale,Kotlin-CSDN博客文章浏览阅读237次,点赞2次,收藏2次。文章浏览阅读9.6k次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android Material Design :LinearLayoutCompat添加分割线divider_linearlayout 分割线-CSDN博客。https://blog.csdn.net/zhangphil/article/details/134832517

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置

一、依赖安装 sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk pip2 install pandas jinja2 pyserial cerberus pyulog0.7.0 n…

VG3225EFN压控晶体振荡器(VCXO)

5G脞2020年开始&#xff0c;商业服务正在全球范围内快速部署。5G通信网络需要保持高速率和可靠性&#xff0c;这2两者都需要低噪声&#xff0c;使用高频基模晶体振荡器&#xff08;高达50MHz&#xff09;&#xff0c;该晶体振荡器可以提供低相位噪声参考时钟&#xff0c;从而降…

【数据结构和算法】判断子序列

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;双指针 三、代码 3.1 方法一&#xff1a;双指针 3.1.1 Java易懂版&#xff1a;…

浅析LDPC软解码对SSD延迟的影响--part2

2.LDPC&#xff08;Low Density Parity Check&#xff09;纠错码 LDPC码是一种基于稀疏矩阵的纠错码&#xff0c;它由一组奇偶校验方程组成&#xff0c;其中大部分元素为零&#xff0c;因此得名“低密度”。LDPC码的优点是可以有效地纠正大量的错误&#xff0c;尤其是对于高密…

Qt点击子窗口时父窗口标题栏高亮设计思路

父窗口调用findChildren得到其子孙窗口的列表&#xff0c;列表元素统一为QWidget*&#xff0c;遍历列表元素&#xff0c;每个元素调用installEventFilter&#xff0c;过滤QEvent::FocusIn和QEvent::FocusOut事件&#xff0c;做相应处理即可&#xff1a; QWidget* parent; QLis…

net::ERR_CERT_AUTHORITY_INVALID

接口请求报错&#xff1a;net::ERR_CERT_AUTHORITY_INVALID 浏览器遇到这种不安全的证书会自动拦截&#xff0c;导致数据无法获取 问题分析 翻译一下&#xff1a; 其实从字面意思就可以指定报错原因了&#xff1a;https的ssl证书有问题。 解决办法 临时解决办法 我们可以…

Docker Swarm编排:构建简单集群

Docker Swarm 是 Docker 官方提供的容器编排工具&#xff0c;通过它可以轻松构建和管理多个 Docker 容器的集群。本文将深入探讨 Docker Swarm 的基础概念、构建集群的步骤&#xff0c;并提供更为丰富和实际的示例代码&#xff0c;帮助大家全面了解如何使用 Docker Swarm 搭建一…

0x21 树与图的遍历

0x21 树与图的遍历 树与图最常见的储存方式就是使用一个邻接表保存它们的边集。邻接表以head数组为表头&#xff0c;使用ver和edge数组分别存储边的终点和权值&#xff0c;使用next数组模拟链表指针&#xff08;就像我们在0x13节中讲解邻接表所给出的代码那样&#xff09;。 …

大数据生态圈kafka在物联网中的应用测试

背景 由物联网项目中使用到了Tbox应用管理车辆&#xff0c;在上报数据的过程中&#xff0c;需要将终端产生的数据通过kafka的produce topic customer对数据进行处理后&#xff0c;放置到mysql中。完成数据二进制到json转换工作。 Kafka的使用 查看kafka的topic ./kafka-topi…

【Trino权威指南(第二版)】Trino的架构、trino架构组件、 trino连接器架构的细节、trino的查询执行模型

文章目录 一. Trino架构1. 架构概览2. 协调器3. 发现服务4. 工作节点 二. 基于连接器的架构三. 查询执行模型1. 解析—>查询计划2. 查询计划 —> 分布式查询计划3. 运行阶段3.1. 基础概念切片&#xff1a;并行单元page 与 exchange算子pipeline切片的driverOperator 3.2.…

Redis 的常见使用场景

01 缓存 作为 Key-Value 形态的内存数据库&#xff0c;Redis 最先会被想到的应用场景便是作为数据缓存。而使用 Redis 缓存数据非常简单&#xff0c;只需要通过 string 类型将序列化后的对象存起来即可&#xff0c;不过也有一些需要注意的地方&#xff1a; 必须保证不同对象的…

STL中sort的底层实现

文章目录 1、源码分析2、算法优化3、总结 在讲解STL中sort的底层原理之前&#xff0c;先引申出这样几个问题&#xff1f; ①STL中sort的底层是采用哪种或者哪几种排序&#xff1f; ②STL中sort会导致栈溢出吗&#xff1f; ③快速排序的时间复杂度是不稳定的 l o g 2 n log_2n l…

Cmake基础(2)

使用一个简单的示例来应用cmake&#xff0c;无任何三方库的单一的应用程序项目 你可以收获 使用cmake生成VS项目生成mingw项目(makefile) 1 首先新建一个cpp&#xff0c;我们要做一个控制台应用程序 #include<iostream> void main(){std::cout<<"hello cm…

2024年顶级的9个 Android 数据恢复工具(免费和付费)

不同的事情可能会损坏您的Android手机并导致您丢失数据。但大多数时候&#xff0c;您可以使用取证工具恢复部分或全部文件。 问题可能来自手机的物理损坏、磁盘的逻辑故障、完整的系统擦除&#xff0c;或者只是简单的粗心大意。 但是&#xff0c;无论数据丢失的原因是什么&am…

docker小白第四天

docker小白第一天 什么是镜像 1、是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等)&#xff0c;这个打包好的运行环境就…

animate.css

animate.css可以理解是一个动画特效库&#xff0c;里面有好多动画特效&#xff0c;使用起来很方便。 animate.css的官网地址&#xff1a;animate.css

三、Spring IoC 容器和核心概念

本章概要 组件和组件管理概念 什么是组件&#xff1f;我们的期待Spring充当组件管理角色&#xff08;IoC&#xff09;组件交给Spring管理优势 Spring IoC 容器和容器实现 普通和复杂容器SpringIoC 容器介绍SpringIoC 容器具体接口和实现类SpringIoC 容器管理配置方式 Spring I…

Ansible的YAML语法

文章目录 环境YAML基础换行引号考一考 Ansible变量布尔值参考 环境 管理节点&#xff1a;Ubuntu 22.04控制节点&#xff1a;CentOS 8Ansible&#xff1a;2.15.6 YAML基础 --- &#xff1a;文件开头&#xff08;可选&#xff09;... &#xff1a;文件结尾&#xff08;可选&am…

C语言编程题-单身狗

题号&#xff1a;BYTE1562 单身狗1 题目描述&#xff1a;一个数组中只有一个数字是出现一次&#xff0c;其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。 例如&#xff1a; 有数组的元素是&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&…

pgsql_postgresql表的继承关系查询

pgsql_postgresql表的继承关系查询 pgsql_postgresql表的继承关系查询前言向上反查表的继承关系SQL系统表说明pg_classpg_namespacepg_inheritspgsql with 语法 pgsql_postgresql表的继承关系查询 前言 表继承是pgsql的一个特性&#xff0c;通过表继承可以方便的实现表数据的…