Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
謎とき会(Android画像ライブラリ調査会)@2018/02/21
Search
Shion
February 11, 2018
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
謎とき会(Android画像ライブラリ調査会)@2018/02/21
コピペ、リンククリック用の補完資料
http://tshion.webcrow.jp/itlog/index.html?id=20180222125216
Shion
February 11, 2018
More Decks by Shion
See All by Shion
App Center × Android × CD(仮)
shion
0
110
C# でできること
shion
0
300
Other Decks in Programming
See All in Programming
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
4
3.5k
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
920
AWSに止められる覚悟してますか?
morizo_1984
2
530
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
300
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
640
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
ジョジョの世界をXRで再現する
mofurune
0
160
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
golang-bob.pdf
iwatsukayura
0
130
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
270
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
My Coaching Mixtape
mlcsv
0
360
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Deep Space Network (abreviated)
tonyrice
0
370
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Transcript
謎とき会 ~Android 画像ライブラリ調査会~ Shion(@shion_engineer) 2018/02/21( 水)
謎とき会とは 疑問に思うけど、 なかなか調べられないもの( 謎) を、 いろんな人を巻き込んで勉強してみる会 ※ 脱出ゲー ムとかではないので、 ご注意ください
m(_ _)m 2
今回のテー マ Android の画像ライブラリの種類や使い方の調査 動機 Android の画像ライブラリって何を使えば良いか 分からないから……。 Qiita とかの紹介記事を見るだけで終わってしまう
から……。 3
画像ライブラリの動向 DroidKaigi 2017 のサイバー エー ジェントさんのブー スでこんなアンケー トがありました。 ※DroidKaigi2017 に参加して感じた今後のAndroid
開 発 に掲載されている画像を引用 4
画像ライブラリの動向 去年の話ではあるけれど、 Picasso Glide Fresco が主流みたい……。 5
画像ライブラリ使用歴 Picasso → 使ったことある Glide → 何それ Fresco → 何それ
6
なので一緒に勉強できると幸いです m(_ _)m 7
今日の流れ 最初に画像ライブラリPicasso のハンズオンを行いま す。 その後に各自で画像ライブラリの調査等をしてい く流れです。 時間 作業内容 19:00 ~
20:30 Picasso を使ってみる 20:30 ~ 21:30 各自で画像ライブラリを調査する 21:30 ~ 22:00 成果発表 8
Picasso を使ってみる 9
Picasso とは Square 社製の画像ライブラリ。 手軽に画像を扱える ようになるので、 とても便利!! 特にサー バー にある画像の表示がすごく楽になる
導入前 導入後 画像を通信で取得して、 Bitmap 等で加工して、UI に 反映…… URL を指定するだけ で、 あとは勝手にUI に反映 ※ 使わない時の実装は下記ブログのようになります。 【Android プログラミング入門 #007】 ネット上の画 像を取得しImageView に表示する 10
サンプルコー ド サー バー にある画像を取得して、Android のUI に反 映するコー ドは Picasso.with(context)
.load("http://i.imgur.com/DvpvklR.png") .into(imageView); たったこれだけ 11
ということでハンズオン! 12
ハンズオンの流れ サー バー 上の画像とロー カル画像を表示していきます。 1. Android のプロジェクトを新規作成する 2. レイアウトファイルをいじる
3. gradle をいじる 4. AndroidManifest をいじる 5. コー ドをいじる 6. 実行する! 13
1. Android のプロジェクトを新規作 成する 基本的にはぽちぽちするだけです。 Empty Acivity で作成してください。 14
2. レイアウトファイルをいじる activity_main.xml を修正します。 下記をコピペして、 書き換えてください。 <?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" android:orientation="vertical"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout> 15
3. gradle をいじる app/build.gradle にPicasso を導入するための記述を 追加します。 dependencies { implementation
fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-la testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1 androidTestImplementation 'com.android.support.test.espresso // Picasso compile 'com.squareup.picasso:picasso:2.5.2' } 16
4. AndroidManifest をいじる ネットワー ク設定を追加します。 AndroidManifest.xml に下記を追記してください。 <!-- パー ミッション設定
--> <uses-permission android:name="android.permission.INTERNET" /> 17
5. コー ドをいじる( サー バー 画像編) MainActivity に画像を表示するためのコー ドを書い ていきます。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 画像の表示場所の取得 ImageView imageView = findViewById(R.id.image); // 画像の読み込み Picasso.with(this) .load("http://i.imgur.com/DvpvklR.png") .into(imageView); } 18
6. 実行する! 19
余談 画像の表示を確認できたら、 アプリを終了させ、 機内 モー ドにしてから、 再度アプリを起動してみてくださ い。 おそらくキャッシュされた画像が表示される…… は
ず。 20
5. コー ドをいじる( ロー カル画像編) mipmap-xxxhdpi/ic_launcher.png をdrawable フォル ダー にコピー
します。 ※load() にmipmap を指定してうまくいかなかったの で……。 21
5. コー ドをいじる( ロー カル画像編) MainActivity に画像を表示するためのコー ドを書い ていきます。 @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 画像の表示場所の取得 ImageView imageView = findViewById(R.id.image); // 画像の読み込み Picasso.with(this) .load(R.drawable.ic_launcher) .into(imageView); } 22
6. 実行する! 23
Tips 1 画像の読み込み中、 画像が読み込めなかった時の画像 を設定することができます。 コー ドは下記のような感じです。 Picasso.with(context) .load(url) .placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error) .into(imageView); 24
Tips 2 画像パスの指定方法で落ちる場合があるので注意! OK! String path = null; Picasso.with(context) .load(path)
.into(imageView); NG! (IllegalArgumentException) String path = ""; Picasso.with(context) .load(path) .into(imageView); 25
Tips 3 t() は画像表示領域の大きさが決まっている必要があ るので気をつけて! // 画像の表示場所の取得 ImageView imageView =
findViewById(R.id.image); // 画像の読み込み Picasso.with(this) .load(R.drawable.ic_launcher) .fit() .into(imageView); 26
NG <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" /> OK <ImageView android:id="@+id/image"
android:layout_width="match_parent" android:layout_height="match_parent" android:adjustViewBounds="true" /> 27
ハンズオンお疲れ様でしたm(_ _)m 28
各自で調査 m(_ _)m 29
成果発表 感想を頂戴できると嬉しいです(^ ^) 30
参考文献 DroidKaigi2017 に参加して感じた今後のAndroid 開発 Picasso の公式ペー ジ Picasso のGitHub Glide
のGitHub Fresco のGitHub 【Android プログラミング入門 #007】 ネット上の 画像を取得しImageView に表示する 31