WebView で取得する favicon のサイズは小さい

WebView favicon を取得してみたら、表示サイズが小さかった。

準備として、WebViewgetFavicon favicon を取得するためにやるべきこと、

  WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath());

これを実行すると、

  /data/data/パッケージ名/app_icons

の下に、WebpageIcons.db が作られる。これは、onCreate WebView を作成する前に実行しておく。

表示サンプルは、textAppearance 属性を付けない TextView と並べて表示させる。

<ImageView
    android:id="@+id/iconImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   android:layout_gravity="center_vertical"
    android:layout_margin="20dp"
      />
<TextView
    android:id="@+id/TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:text="通常のTextView"
    android:textColor="#000000" />

サンプルはあえて、WebView を実行しているActivity から、別のActivity に取得した
favicon を渡して表示することにして、、

Bitmap icon = mWebView.getFavicon();

if (icon != null){
   ByteArrayOutputStream os = new ByteArrayOutputStream();
   icon.compress(CompressFormat.WEBP, 100, os);
   intent.putExtra("icon", os.toByteArray());
}
startActivity(intent);

受信側は、、、、

byte[] iconBytes = getIntent().getByteArrayExtra("icon");
Bitmap bitmap = BitmapFactory.decodeByteArray(iconBytes, 0, iconBytes.length, new BitmapFactory.Options());
icon.setImageBitmap(bitmap);

f:id:posturan:20160313195339p:plain


とても小さい表示である。

ImageView の layout_width layout_height を指定してみる。

40dp を指定 ↓↓↓↓↓↓↓↓↓

f:id:posturan:20160313195335p:plain



画像が荒くなってしまう。
次に、16dp, 20dp, 30dp を指定してみる。
↓↓↓↓↓↓↓↓↓

f:id:posturan:20160313195330p:plain



自分では、24dp ぐらいまでなら、画像の荒さは許せるかな?