Android 顶部对齐宽度撑满高度等比例缩放及限制最大最小高度

本文主要是介绍Android 顶部对齐宽度撑满高度等比例缩放及限制最大最小高度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 示例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二 代码

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><com.example.test.ui.video.ui.image.topfit.TopFitImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/purple_200"android:scaleType="fitXY" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="largeWidthStretch"android:text="2/1宽高比" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="equalWidthStretch"android:text="1/1宽高比" /></LinearLayout></FrameLayout>
package com.example.test.ui.video.ui.image.topfitimport android.content.Context
import android.graphics.Bitmap
import android.util.AttributeSetclass TopFitImageView : androidx.appcompat.widget.AppCompatImageView {constructor(context: Context?) : super(context!!)constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs)constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context!!,attrs,defStyleAttr)val minWHRatio = 1val maxWHRatio = 2override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {val drawable = drawableif (drawable != null) {val whRatio = drawable.intrinsicWidth.toFloat() / drawable.intrinsicHeight.toFloat()val width = MeasureSpec.getSize(widthMeasureSpec)var height = (width / whRatio).toInt()if (whRatio > maxWHRatio) {height = width / maxWHRatio} else if (whRatio < minWHRatio) {height = width}setMeasuredDimension(width, height)} else {super.onMeasure(widthMeasureSpec, heightMeasureSpec)}}override fun setImageBitmap(bm: Bitmap?) {if (bm != null && bm.width > 0 && bm.height > 0) {var height = bm.heightval whRatio = bm.width / bm.height
//            if (whRatio > maxWHRatio) {
//                height = bm.width / maxWHRatio
//            } elseif (whRatio < minWHRatio) {height = bm.width}super.setImageBitmap(Bitmap.createBitmap(bm, 0, 0, bm.width, height))return}super.setImageBitmap(bm)}}

这篇关于Android 顶部对齐宽度撑满高度等比例缩放及限制最大最小高度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484162

相关文章

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D