Androidアプリで画像切り替えの遅さを改善するには
お世話になっております。ノベルゲームを作っているものです。
タイトル通り画像表示について困っています。
私はキャラをベースの体、腕、目、口に分けていて、それらを重ねて表示し、ボタンを押したときに画像を変える処理を書きました。しかし、実機で試したところボキャラを表示する動作がUXにかかわるくらい遅いのです。
なぜ、普通のノベルゲームのようにサクサク動かないのでしょうか?これを改善するにはどうすればいいのでしょうか?
下に記すコードはキャラを表示するactivityのメソッドです。
public void message(View view) {
//メッセージのビューに名前テキストを入れるメソッド
mes();
//名前のビューに名前テキストを入れるメソッド
name();
//キャラのビューにキャラを入れるメソッド
chara();
int num = Integer.parseInt(number);
num++;
number = String.valueOf(num);
}
private void mes(){
Resources res = getResources();
Button message = findViewById(R.id.message);//メッセージボタンのidを取得。
int strId = getResources().getIdentifier("message" + number, "string", getPackageName());//numberを使い動的にIdを取得。
message.setText(res.getString(strId));
}
private void name() {
Resources res = getResources();
TextView name=findViewById(R.id.name);//名前テキストビューのIDを取得。
int nameId = getResources().getIdentifier("name" + number, "string", getPackageName());//numberを使い動的にIdを取得。
name.setText(res.getString(nameId));
}
private void chara() {
ImageView base = (ImageView) findViewById(R.id.base);
int baseId = getResources().getIdentifier("base" + number, "string", getPackageName());
base.setImageResource(baseId);/
ImageView ude = (ImageView) findViewById(R.id.ude);得。
int udeId = getResources().getIdentifier("ude" + number, "string", getPackageName());
ude.setImageResource(udeId);
ImageView me = (ImageView) findViewById(R.id.me);
int meId = getResources().getIdentifier("me" + number, "string", getPackageName());
me.setImageResource(meId);
ImageView kuchi = (ImageView) findViewById(R.id.kuchi);
int kuchiId = getResources().getIdentifier("kuchi" + number, "string", getPackageName());。
kuchi.setImageResource(kuchiId);
}
一応、自分で考えた解決策で、解像度を下げること、キャラを一枚にまとめること、この二つを出しました。
前者は、試したところ画像の質が許容できないくらい下がってしまい、却下となりました。
後者はまだ試していません。やはり細やかな表情を出すために、部分分けはしたいです。それに部分分けしたほうがアプリが重くならないと思うのです。(実際に、ほかのノベルゲーム製作エンジンでは部分分けをしていました。)
この他にどんな対策が考えられるでしょうか?
はっきりいって今、私は深い森の中で道を見失ってしまっているような状態です。
この森を抜けだす、方角だけでも、指針だけでも教えていただけると助かります。