Android畫布Canvas繪圖scale,Kotlin

Android畫布Canvas繪圖scale,Kotlin

?

46334432917a469da58fb423af0aade4.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="300px"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /><ImageViewandroid:id="@+id/iv3"android:layout_width="300px"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/iv4"android:layout_width="300px"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /><ImageViewandroid:id="@+id/iv5"android:layout_width="300px"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/ic_launcher_background" /><ImageViewandroid:id="@+id/iv6"android:layout_width="300px"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.Color
import android.graphics.Paint
import android.graphics.RectF
import android.graphics.drawable.BitmapDrawable
import android.os.Bundle
import android.util.Log
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? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)iv = findViewById(R.id.iv)iv1 = findViewById(R.id.iv1)lifecycleScope.launch(Dispatchers.Main) {delay(500)f1()}}private fun f1() {val bitmap = ((iv?.drawable as BitmapDrawable).bitmap.copy(Bitmap.Config.ARGB_8888, true))//val bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888)val canvas = Canvas(bitmap)//canvas.drawColor(Color.LTGRAY) //鋪滿val w = bitmap.widthval h = bitmap.heightLog.d("fly", "w=$w h=$h")val paint = Paint()paint.isAntiAlias = truepaint.color = Color.REDpaint.style = Paint.Style.FILLval left = 60fval top = 60fval rectF = RectF(left, top, left + w / 2, top + h / 2)canvas.drawRect(rectF, paint)canvas.scale(0.5f, 0.5f) //縮小。paint.color = Color.YELLOWcanvas.drawRect(rectF, paint)canvas.scale(0.3f, 0.3f) //縮小。paint.color = Color.BLUEcanvas.drawRect(rectF, paint)iv1?.setImageBitmap(bitmap)}
}

?

?

?

?

Android畫布Canvas繪制drawBitmap基于源Rect和目的Rect,Kotlin-CSDN博客文章瀏覽閱讀471次,點贊9次,收藏8次。文章瀏覽閱讀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/134818221

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212756.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據倉庫工具Hive

1. 請解釋Hive是什么&#xff0c;它的主要用途是什么&#xff1f; Hive是一個基于Hadoop的數據倉庫工具&#xff0c;主要用于處理和分析大規模結構化數據。它可以將結構化的數據文件映射為一張數據庫表&#xff0c;并提供類似SQL的查詢功能&#xff0c;將SQL語句轉換為MapRedu…

Windows 和 MacOS 上安裝配置ADB(安卓調試橋)

一、Android 調試橋 (ADB) Android 調試橋&#xff08;ADB&#xff09; 是一款多功能命令行工具&#xff0c;它讓你能夠更便捷地訪問和管理 Android 設備。使用 ADB 命令&#xff0c;你可以輕松執行以下操作 在設備上安裝、復制和刪除文件&#xff1b;安裝應用程序&#xff1…

YOLOV3 SPP 目標檢測項目(針對xml或者yolo標注的自定義數據集)

1. 目標檢測的兩種標注形式 項目下載地址:YOLOV3 SPP網絡對自定義數據集的目標檢測(標注方式包括xml或者yolo格式) 目標檢測邊界框的表現形式有兩種: YOLO(txt) : 第一個為類別,后面四個為邊界框,x,y中心點坐標以及h,w的相對值 xml文件:類似于網頁的標注文件,里面會…

力扣第 375 場周賽(Java)

文章目錄 T1 統計已測試設備代碼解釋 T2 雙模冪運算代碼解釋 T3 統計最大元素出現至少 K 次的子數組代碼解釋 T4 統計好分割方案的數目代碼解釋 鏈接&#xff1a;第 375 場周賽 - 力扣&#xff08;LeetCode&#xff09; T1 統計已測試設備 給你一個長度為 n 、下標從 0 開始的…

JavaEE 08 線程池簡介

前言 前面我們談完了定時器,單例模式,阻塞隊列等的操作并且做了模擬實現,今天我們再來說一說線程池的操作以及一些鎖策略. 注:本章幾乎均為理論篇,實踐較少. 下面就讓我們開始吧. 線程池 我們知道因為進程的頻繁創建和銷毀,帶來的開銷過大,我們無法接受,所以我們引入了更輕量級…

Linux常見壓縮指令小結

為什么需要壓縮技術 我們都知道文件是以byte作為單位的&#xff0c;如果我們的文件僅僅在低位占一個1 0000 0001這種情況我們完全可以壓縮一下&#xff0c;將高位的0全部抹掉即可。 如上所說是一種壓縮技術&#xff0c;還有一種就是將1111(此處省略96個)一共100個1&#xff0…

mysql執行帶函數命令的sql腳本報錯

一、前言 開發給了一個帶函數的sql文件讓我執行&#xff0c;但是執行導入時報以下錯誤 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled 二、解決 在數據庫命令行中執行以下命令&#xff08;臨時生效&…

HarmonyOS4.0從零開始的開發教程11給您的應用添加彈窗

HarmonyOS&#xff08;十&#xff09;給您的應用添加彈窗 概述 在我們日常使用應用的時候&#xff0c;可能會進行一些敏感的操作&#xff0c;比如刪除聯系人&#xff0c;這時候我們給應用添加彈窗來提示用戶是否需要執行該操作&#xff0c;如下圖所示&#xff1a; 彈窗是一種…

AI:99-基于深度學習的飛機故障檢測與維修

?? 本文選自專欄:人工智能領域200例教程專欄 從基礎到實踐,深入學習。無論你是初學者還是經驗豐富的老手,對于本專欄案例和項目實踐都有參考學習意義。 ??? 每一個案例都附帶有在本地跑過的核心代碼,詳細講解供大家學習,希望可以幫到大家。歡迎訂閱支持,正在不斷更新…

【pycharm】Pycharm中進行Git版本控制

本篇文章主要記錄一下自己在pycharm上使用git的操作&#xff0c;一個新項目如何使用git進行版本控制。 文章使用的pycharm版本PyCharm Community Edition 2017.2.4&#xff0c;遠程倉庫為https://gitee.com/ 1.配置Git&#xff08;File>Settings&#xff09; 2.去Gitee創建…

記錄一次云原生線上服務數據遷移全過程

文章目錄 背景遷移方案調研遷移過程服務監控腳本定時任務暫停本地副本服務啟動&#xff0c;在線服務下線MySQL 數據遷移Mongo 數據遷移切換新數據庫 ip 本地服務啟動數據庫連接驗證服務打包部署服務重啟前端恢復正常監控腳本定時任務啟動舊服務器器容器關閉 遷移總結 背景 校園…

正確使用React組件緩存

簡介 正常來講的話當我們點擊組件的時候&#xff0c;該組件以及該組件的子組件都會重新渲染&#xff0c;但是如何避免子組件重新渲染呢&#xff0c;我們經常用memo來解決 React.memo配合useCallback緩存組件 父組件沒有傳props const Index ()> {console.log(子組件刷新…

Java14道高頻面試題

面試題 1、JWT ①、JWT(全稱:Json Web Token)是一個開放標準(RFC 7519),它定義了一種緊湊的、自包含的方式,用于作為 JSON 對象在各方之間安全地傳輸信息。 ②、JWT 的原理是&#xff0c;服務器認證以后&#xff0c;生成一個 JSON 對象&#xff0c;發回給用戶 ③、JWT是由頭…

機器學習基本概念介紹 2023

筆記來源于&#xff1a; https://www.youtube.com/watch?vphQK8xZpgoU&t172s https://www.youtube.com/watch?vXLyPFnephpY&t645s Machine/Deep Learning 機器學習概況來說&#xff0c;讓機器具備自動找函式的能力 &#xff08;Machine Learning 約等于 Looking …

智能優化算法應用:基于飛蛾撲火算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于飛蛾撲火算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于飛蛾撲火算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.飛蛾撲火算法4.實驗參數設定5.算法結果6.…

訂單系統的設計與海量數據處理實戰

概述 訂單系統可以說是整個電商系統中最重要的一個子系統&#xff0c;因此訂單數據可以算作電商企業最重要的數據資產。訂單系統從代碼上來說可分為兩部分&#xff1a;訂單程序和歷史訂單處理程序。數據存儲進行分庫分表。 訂單系統業務分析 對于一個合格的訂單系統&#xf…

如何使用bash寫腳本

本章主要介紹如何使用bash寫腳本。 了解通配符了解變量了解返回值和數值運算數值的對比判斷語句循環語句 grep的用法是“grep 關鍵字 file”&#xff0c;意思是從file中過濾出含有關鍵字的行。 例如&#xff0c;grep root /var/log/messages&#xff0c;意思是從/var/log/me…

基于Html+騰訊云播SDK開發的m3u8播放器

周末業余時間在家無事&#xff0c;學習了一下騰訊的云播放sdk&#xff0c;并制作了一個小demo&#xff08;m3u8播放器&#xff09;&#xff0c;該在線工具是基于騰訊的云播sdk開發的&#xff0c;云播sdk非常牛&#xff0c;可以支持多種播放格式。 預覽地址 m3u8player.org 源碼…

JVM進程緩存

引言 緩存在日常開發中啟動至關重要的作用&#xff0c;由于是存儲在內存中&#xff0c;數據的讀取速度是非常快的&#xff0c;能大量減少對數據庫的訪問&#xff0c;減少數據庫的壓力。我們把緩存分為兩類&#xff1a; 分布式緩存&#xff0c;例如Redis&#xff1a; 優點&…

Mybatis之簡介、使用操作(安裝、XML、SqlSession、映射的SQL語句、命名空間、作用域和生命周期)

學習的最大理由是想擺脫平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;遲一天就多一天平庸的困擾。各位小伙伴&#xff0c;如果您&#xff1a; 想系統/深入學習某技術知識點… 一個人摸索學習很難堅持&#xff0c;想組團高效學習… 想寫博客但無從下手&#xff0c;急需…