【Android】アスペクト比を指定するとViewのサイズを自動調整してくれるImageViewを作ってみた - AspectRatioImageView
3186 ワード
概要
アスペクト比を指定しておくと、ImageViewの高さをアスペクト比の値に応じて自動的にリサイズしてくれるViewを作ってみた。
- Github
- Youtube
経緯
このライブラリを作るに至った経緯はこんな感じ
- Picassoを使っていて、
fit
を利用して画像をロードしたい - GridViewにnumColumnsを指定し、ImageViewは縦横比固定で幅・高さを可変させたい。
この状況の時に僕が困っていた事が以下の二点
- 幅はMATCH_PARENTで指定するんだけど、高さはWRAP_CONTENTで指定する必要がある(ImageViewの下に他のViewを置きたい)
- 高さをWRAP_CONTENTで指定した後、Picassoに
fit
で画像読み込みさせた時に高さが0の状態で処理されて画像が表示されないので何とかする必要があった - アスペクト比が決まっているのなら、それベースでViewの領域を自動調整させれば良いのでは!という感じで作ることにした
使い方
Gradleの依存関係にAspectRatioImageViewを追加
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
compile 'com.github.chuross:aspect-ratio-imageview:v1.0.2'
}
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
compile 'com.github.chuross:aspect-ratio-imageview:v1.0.2'
}
GithubPageの個人maven-repositoryに上げてあるので、repositoriesへの追加も忘れずに
XMLのレイアウトに記述する
<dev.chuross.library.AspectRatioImageView
android:id="@+id/img_aspect_image_8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ariv_widthRatio="16"
app:ariv_heightRatio="9" />
この例の場合はImageViewを16:9で高さを自動リサイズする
ライセンス
Apache License 2.0
その他色々
- 中身はonMeasureで色々計算させてるだけなのでImageView意外にも使えそう
- 似たようなコンセプトのライブラリは既にあったが、こちらはオリジナルサイズによる調整をしてくれるっぽい
- プレースホルダ使うとか他にもやり方はありそう
Author And Source
この問題について(【Android】アスペクト比を指定するとViewのサイズを自動調整してくれるImageViewを作ってみた - AspectRatioImageView), 我々は、より多くの情報をここで見つけました https://qiita.com/chuross/items/0d6a2365bbf9d09fe84e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .