WebView で favicon を取得してみたら、表示サイズが小さかった。
準備として、WebViewの getFavicon で 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);
とても小さい表示である。
ImageView の layout_width layout_height を指定してみる。
40dp を指定 ↓↓↓↓↓↓↓↓↓
画像が荒くなってしまう。
次に、16dp, 20dp, 30dp を指定してみる。
↓↓↓↓↓↓↓↓↓
自分では、24dp ぐらいまでなら、画像の荒さは許せるかな?