タイトルは曖昧に見えますが、私の目標は簡単に理解できます。
プロジェクトにres/drawable-hdpiの下に一定数の画像があります。
私のアプリでは、サーバーから名前のリストを取得し、それらをローカルデータベースに保存しています。
それぞれの名前は、末尾に「.png」が付いた画像の名前に対応しています。
私はGaleryを使用しており、ユーザーは対応する画像をクリックしてデータベースから名前の1つを選択できます。
ここまではすべて大丈夫です。
ただし、ここで、サーバー側に新しい名前が追加されるため、イメージがアプリケーションに存在しないとしましょう。この場合、アプリを更新して、適切な画像を内部に配置する必要があります。
ユーザーがギャラリーに「黒い画像」を表示しないようにするために(画像が存在しないため)、Androidでこの画像を作成したいと思います。
プロジェクトに画像が存在しないかどうかを実際に把握して、新しい画像(真ん中に名前が付いた白い背景)を作成することができます。
ここで問題となるのは、この新しい画像をどこにどのように保存するかです。どうやら、これをres/drawableフォルダに保存することはできません。では、どこにどのように保存するのでしょうか。
これが私が新しい画像を作成しているコードの部分です:
if (imageId == 0)
{
Bitmap journal_template = BitmapFactory.decodeResource(context.getResources(), R.drawable.journals_template).copy(Bitmap.Config.ARGB_8888, true);
Canvas myCanvas = new Canvas(journal_template);
Paint myPaint = new Paint();
myPaint.setColor(Color.BLACK);
myPaint.setTextSize(25);
String journal_name = publicJournalsNameSystem.get(i).toLowerCase();
Paint textPaint = new Paint();
textPaint.setARGB(200, 254, 0, 0);
textPaint.setTextAlign(Align.CENTER);
int xPos = (myCanvas.getWidth() / 2);
int yPos = (int) ((myCanvas.getHeight() / 2) - ((textPaint.descent() + textPaint.ascent()) / 2)) ;
myCanvas.drawText("Your text", xPos, yPos, myPaint);
try {
FileOutputStream out = new FileOutputStream("/journals_"+journal_name+".png");
journal_template.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
}