Android アクティビティにレイアウトがあり、それを画像として変換してから、さまざまなソーシャル ネットワークで共有しています。問題は、品質がまったく良くないことです。画像にアーティファクトがあり、品質は画面のサイズに依存します。
品質を向上させる方法はありますか?完全なレイアウト イメージを静的イメージとしてアプリケーション ディレクトリに保存できません。外出先で生成する必要があります。
レイアウトを PNG に変換するために使用するコードを次に示します。
Bitmap bitmap = null;
try {
bitmap = Bitmap.createBitmap(dashboardView.getWidth(),
dashboardView.getHeight(), Bitmap.Config.ARGB_4444);
dashboardView.draw(new Canvas(bitmap));
} catch (Exception e) {
// Logger.e(e.toString());
}
FileOutputStream fileOutputStream = null;
File path = Environment
.getExternalStorageDirectory();
File file = new File(path, "wayzupDashboard" + ".png");
try {
fileOutputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
bitmap.compress(CompressFormat.PNG, 100, bos);
try {
bos.flush();
bos.close();
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
編集:悪いことに、ARGB_4444を残しました。実際、SOに質問を投稿する前に多くのテストを行ったのですが、ARGB_8888を入れるのを忘れていました。それでも、小さな画面のAndroid携帯では画質が悪い. レイアウトのキャプチャ中に常に HDPI drawable を使用するように指示できれば。