回答編集履歴

1

追記

2018/07/08 04:51

投稿

f-miyu
f-miyu

スコア1625

test CHANGED
@@ -99,3 +99,73 @@
99
99
  ImageService.Instance.LoadUrl(url).Into(imageView):
100
100
 
101
101
  ```
102
+
103
+
104
+
105
+ ### 追記
106
+
107
+ 今のコードのままでは、少し問題が出てくるかもしれません。
108
+
109
+
110
+
111
+ 0. 画像取得に失敗(通信できないなど)したら、Taskが終わらない
112
+
113
+ 1. スクロールしなければ、画像の読み込みが行われない
114
+
115
+
116
+
117
+ 1.に関しては、`DownloadDataCompleted`を以下のように修正すれば、大丈夫かと思います。
118
+
119
+ ```C#
120
+
121
+ webClient.DownloadDataCompleted += (sender, e) =>
122
+
123
+ {
124
+
125
+ Bitmap image = null;
126
+
127
+ try
128
+
129
+ {
130
+
131
+ if (!e.Cancelled && e.Error == null)
132
+
133
+ {
134
+
135
+ var imageBytes = e.Result;
136
+
137
+ if (imageBytes != null && imageBytes.Length > 0)
138
+
139
+ {
140
+
141
+ image = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
142
+
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ finally
150
+
151
+ {
152
+
153
+ tcs.SetResult(image);
154
+
155
+ }
156
+
157
+ };
158
+
159
+ ```
160
+
161
+ ただ、`GetImageBitmapFromUrl`が`null`を返すので、このメソッドを使っている`SetThumb`では、nullチェックが必要になります。
162
+
163
+
164
+
165
+ 2.に関しては、`SetThumb`で、`imageView`のサイズチェックをして、0なら処理を行なっていないためです。この時`imageView`はまだサイズが確定していないので、`Width`、`Height`は0を返します。
166
+
167
+ よくよく見ると、リサイズ処理は行っているようですが、使ってはいないようなので、サイズチェック自体を行わないようにするのが一番簡単かと思います。
168
+
169
+
170
+
171
+ 先に述べたライブラリを使えば、リサイズも簡単に行ってくれるので、できるなら使用することを強くお勧めします。