Android ImageView 高度固定,寬度自適應(yīng)

為避免歧義巴刻,我們首先來明確下文章標(biāo)題的具體含義愚铡。對于一個 ImageView,所謂“高度固定胡陪,寬度自適應(yīng)”在這里是指這個 ImageView 的高度取我們預(yù)設(shè)好的一個固定值沥寥,待展示圖像要鋪滿 ImageView 的高度(這點(diǎn)很重要!也是最不容易滿足的一點(diǎn)需求D)邑雅,ImageView 的寬度隨圖像比例自適應(yīng),即在不超出屏幕物理顯示范圍的前提下根據(jù)待展示圖像的長寬比和自身高度來確定自身寬度妈经。

大家在實際項目開發(fā)中可能都遇到過這種需求淮野,就是有一些圖片需要展示給用戶,有意思的是這些圖片的長寬比可能不一致吹泡。然后呢骤星,我們的界面設(shè)計中給圖片留的高度(寬度)可能是固定的,但相對的爆哑,寬度(高度)可能不需要固定洞难,相對于父 View 在特定方向居中顯示就行。

這時候我們就要思考如何寫出靈活適應(yīng)的代碼揭朝,來應(yīng)付只在一個顯示維度(高度或?qū)挾龋┥先」潭ㄖ刀蛹硪粋€顯示維度(寬度或高度)自適應(yīng)的多個長寬比不一致的圖像。

如果待展示的圖片都是本地圖片潭袱,這里有個常用的適配方案柱嫌。

首先我們用一種節(jié)省開銷的方式測量下待展示圖像的長寬值,有了長寬值屯换,長寬比自然也就有了:

val options: BitmapFactory.Options = BitmapFactory.Options() 
options.inJustDecodeBounds = true//只測量待加載圖片编丘,不實際加載,從而節(jié)省開銷
BitmapFactory.decodeFile(path,options)//這里的 path 是一個已知的本地圖片存儲路徑 File對象
bmpWidth = options.outWidth.toFloat()//圖片寬度
bmpHeight = options.outHeight.toFloat()//圖片高度

有了待展示圖像的長寬比,我們只需根據(jù) ImageView 的固定高度(寬度)瘪吏,來計算出 ImageView 的適應(yīng)寬度(高度)癣防,并手動設(shè)置給 ImageView 的 layoutParams 即可(這里可能還需要把 ImageView 的scaleType 設(shè)置成 fitXY)。

目前來看掌眠,這種思路是能夠滿足我們需求的蕾盯。但是,如果待展示的圖像是網(wǎng)絡(luò)圖片呢蓝丙?這時候上面的方法似乎已經(jīng)不適用了级遭!

好啦我就不賣關(guān)子了,直接給出我的實現(xiàn)方法渺尘,非常的簡潔直觀:

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"
    android:background="@color/transparent"
    tools:src="@drawable/test"/>

重點(diǎn)看這兩行代碼:

android:scaleType="fitXY"
android:adjustViewBounds="true"

單純設(shè)置 ImageView 的 scaleType 為 fitXY總免不了圖像會被拉伸挫鸽,使原本的長寬比被破壞。而設(shè)置 adjustViewBounds 為 true 則可以使 ImageView 在展示待展示圖像時保持待展示圖像的長寬比鸥跟。

是的丢郊,只需這兩行代碼搭配就能完美滿足我們的上述需求。

還有注意這個 ImageView 的寬高医咨,分別是:

android:layout_width="wrap_content"
android:layout_height="match_parent"

嗯也就是高度固定寬度隨圖像大小自適應(yīng)枫匾。

完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拟淮,一起剝皮案震驚了整個濱河市干茉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌很泊,老刑警劉巖角虫,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異委造,居然都是意外死亡戳鹅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門争涌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粉楚,“玉大人,你說我怎么就攤上這事亮垫。” “怎么了伟骨?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵饮潦,是天一觀的道長。 經(jīng)常有香客問我携狭,道長继蜡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮稀并,結(jié)果婚禮上仅颇,老公的妹妹穿的比我還像新娘。我一直安慰自己碘举,他們只是感情好忘瓦,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著引颈,像睡著了一般耕皮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝙场,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天凌停,我揣著相機(jī)與錄音,去河邊找鬼售滤。 笑死罚拟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的完箩。 我是一名探鬼主播赐俗,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗜憔!你這毒婦竟也來了秃励?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤吉捶,失蹤者是張志新(化名)和其女友劉穎夺鲜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呐舔,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡币励,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了珊拼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片食呻。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖澎现,靈堂內(nèi)的尸體忽然破棺而出仅胞,到底是詐尸還是另有隱情,我是刑警寧澤剑辫,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布干旧,位于F島的核電站,受9級特大地震影響妹蔽,放射性物質(zhì)發(fā)生泄漏椎眯。R本人自食惡果不足惜挠将,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望编整。 院中可真熱鬧舔稀,春花似錦、人聲如沸掌测。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赏半。三九已至贺归,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間断箫,已是汗流浹背拂酣。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仲义,地道東北人婶熬。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像埃撵,于是被迫代替她去往敵國和親赵颅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Glide坑遇記 有一段時間沒有更新文章了暂刘,但登錄 簡書 發(fā)現(xiàn)時不時也有新的點(diǎn)贊和關(guān)注饺谬,在這里十分感謝大家的認(rèn)可,...
    OCNYang閱讀 38,896評論 5 65
  • 本節(jié)引言: 本節(jié)介紹的UI基礎(chǔ)控件是:ImageView(圖像視圖)谣拣,見名知意募寨,就是用來顯示圖像的一個View或者...
    侯蛋蛋_閱讀 2,791評論 0 1
  • 最近在研究圖片加載庫,趁機(jī)找時間學(xué)習(xí)下ImageView的源碼森缠,探究下它內(nèi)部機(jī)制拔鹰,同時學(xué)習(xí)下View的封裝思想。 ...
    guobin_xu閱讀 5,311評論 0 13
  • 早一點(diǎn) (268) ■六月飛雪 早一點(diǎn)贵涵,晚一點(diǎn) 無所謂 早一點(diǎn) 列肢,少一份 遺憾 晚一點(diǎn),多一份 ...
    朝花夕拾杯中酒123閱讀 233評論 0 7
  • 我好像沒什么資格討論電影院這個地方宾茂,因為我自己去的也不多瓷马。 首先是很少影片值得去電影院看。其次跨晴,我一單身狗去看電影...
    Bookish_陳鍵閱讀 418評論 0 0