回答編集履歴
1
追記
answer
CHANGED
@@ -48,4 +48,39 @@
|
|
48
48
|
|
49
49
|
```C#
|
50
50
|
ImageService.Instance.LoadUrl(url).Into(imageView):
|
51
|
-
```
|
51
|
+
```
|
52
|
+
|
53
|
+
### 追記
|
54
|
+
今のコードのままでは、少し問題が出てくるかもしれません。
|
55
|
+
|
56
|
+
0. 画像取得に失敗(通信できないなど)したら、Taskが終わらない
|
57
|
+
1. スクロールしなければ、画像の読み込みが行われない
|
58
|
+
|
59
|
+
1.に関しては、`DownloadDataCompleted`を以下のように修正すれば、大丈夫かと思います。
|
60
|
+
```C#
|
61
|
+
webClient.DownloadDataCompleted += (sender, e) =>
|
62
|
+
{
|
63
|
+
Bitmap image = null;
|
64
|
+
try
|
65
|
+
{
|
66
|
+
if (!e.Cancelled && e.Error == null)
|
67
|
+
{
|
68
|
+
var imageBytes = e.Result;
|
69
|
+
if (imageBytes != null && imageBytes.Length > 0)
|
70
|
+
{
|
71
|
+
image = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
finally
|
76
|
+
{
|
77
|
+
tcs.SetResult(image);
|
78
|
+
}
|
79
|
+
};
|
80
|
+
```
|
81
|
+
ただ、`GetImageBitmapFromUrl`が`null`を返すので、このメソッドを使っている`SetThumb`では、nullチェックが必要になります。
|
82
|
+
|
83
|
+
2.に関しては、`SetThumb`で、`imageView`のサイズチェックをして、0なら処理を行なっていないためです。この時`imageView`はまだサイズが確定していないので、`Width`、`Height`は0を返します。
|
84
|
+
よくよく見ると、リサイズ処理は行っているようですが、使ってはいないようなので、サイズチェック自体を行わないようにするのが一番簡単かと思います。
|
85
|
+
|
86
|
+
先に述べたライブラリを使えば、リサイズも簡単に行ってくれるので、できるなら使用することを強くお勧めします。
|