Android圖片底部居中的ImageView
原生ImageView可設定的scaleType有fitCenter、fitEnd、fitXY、centerInside等。
有時候,會有"fitBottom"+centerInside的需求。
效果如下圖:
ps:控制元件的background設定為紅色,用於感知控制元件寬高。
實現的原理是重寫ImageView的onDraw方法。在繪製drawable的時候,如果圖片寬高小於控制元件的寬高,那麼就將圖片繪製於控制元件底部居中位置,否則按父類的邏輯去繪製。
程式碼如下:(用法跟ImageView一樣,該咋用就咋用。)
class FitBottomImageView : AppCompatImageView {
private var mVWidth: Int = 0
private var mVHeight: Int = 0
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
//獲取控制元件的寬高
mVWidth = measuredWidth
mVHeight = measuredHeight
}
override fun onDraw(canvas: Canvas) {
val imageDrawable = drawable ?: return
val bounds = imageDrawable.bounds
//獲取圖片的寬高
val width = bounds.width()
val height = bounds.height()
if (width > mVWidth || height > mVHeight) {
//按原生的邏輯去繪製
super.onDraw(canvas)
} else {//圖片的寬高小於控制元件的寬高
//底部居中位置繪製
canvas.save()
canvas.translate(((mVWidth - width) / 2).toFloat(), (mVHeight - height).toFloat())
imageDrawable.draw(canvas)
canvas.restore()
}
}
}
相關文章
- Android ImageView 清空背景圖片AndroidView
- android imageview 縮放檢視圖片AndroidView
- iOS ImageView contentMode 圖片填充模式iOSView模式
- CSS去掉圖片底部的空白CSS
- display:flex 圖片居中效果Flex
- MD圖片註釋居中
- 設定圖片水平垂直居中
- 將圖片旋轉(這裡不是旋轉imageView)View
- 動態的新增ImageView到LinearLayout中並居中顯示View
- 直播電商平臺開發,Android | 圖片縮放、自動居中Android
- 大小不統一的圖片居中排列
- 小程式canvas居中剪裁繪製圖片Canvas
- Android圖片突出Android
- CSS元素(文字、圖片)水平垂直居中方法CSS
- Android ImageView對齊方式設定AndroidView
- Android 圓角、圓形 ImageView 實現AndroidView
- Android 幀動畫打造動態ImageViewAndroid動畫View
- 影片直播原始碼,標題居中,底部按鈕為三個時居中佈局原始碼
- Android 圖片載入框架Android框架
- Android webview圖片過大AndroidWebView
- android非同步生成圖片Android非同步
- android圖片處理,讓圖片變成圓形Android
- Android 眼睛 顯示隱藏密碼(ImageView)Android密碼View
- 手動上傳圖片,怎麼調整大小和居中
- BUG--圖片底部與邊框之間有空白距離
- Android 高效安全載入圖片Android
- Android 和 iOS 圖片輪播AndroidiOS
- Android圖片快取框架GlideAndroid快取框架IDE
- Android生成圖片並放入相簿Android
- [譯] 瞭解 Android 的向量圖片格式:`VectorDrawable`Android
- [譯] 瞭解 Android 的向量圖片格式:VectorDrawableAndroid
- Android-壓縮大圖到容量超小的圖片Android
- Android 載入網路圖片 以及實現圓角圖片效果Android
- Android 圖片高斯模糊解決方案Android
- Android本地圖片上傳(拍照+相簿)Android地圖
- 解決ImageView超出父控制元件(或螢幕邊界)時,圖片擠壓問題View控制元件
- 要優雅!Android中這樣載入大圖片和長圖片Android
- Android效能優化——圖片優化(二)Android優化