46655
お世話になっております。ノベルゲームを作っているものです。  
タイトル通り画像表示について困っています。

私はキャラをベースの体、腕、目、口に分けていて、それらを重ねて表示し、ボタンを押したときに画像を変える処理を書きました。しかし、実機で試したところボキャラを表示する動作が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);
    
    }
    
```

一応、自分で考えた解決策で、解像度を下げること、キャラを一枚にまとめること、この二つを出しました。  
前者は、試したところ画像の質が許容できないくらい下がってしまい、却下となりました。  
後者はまだ試していません。やはり細やかな表情を出すために、部分分けはしたいです。それに部分分けしたほうがアプリが重くならないと思うのです。（実際に、ほかのノベルゲーム製作エンジンでは部分分けをしていました。）

この他にどんな対策が考えられるでしょうか？  
はっきりいって今、私は深い森の中で道を見失ってしまっているような状態です。  
この森を抜けだす、方角だけでも、指針だけでも教えていただけると助かります。
CC BY-SA 4.0
2018-07-15T09:09:05.243
46628
2018-07-17T00:58:31.470
2018-07-17T00:58:31.470
3060
29321
question
android java
Androidアプリで画像切り替えの遅さを改善するには
androidのことは詳しくないですが参考までに思ったことを記述します。  
getResources()が呼ばれすぎだと思います。  
データリソース(画像類)は別に動的に追加するつもりはないですよね？  
動的に組み合わせたいだけでデータ自体は静的なものだと思います。  
それならばActivityのフィールドに

```

    Resources res;
    
```

を宣言してOnCreate()にてres=getResources()を一度だけ代入すればよさそうに思えます。
CC BY-SA 4.0
2018-07-16T08:51:32.827
46655
2018-07-16T08:51:32.827
25980
46628
answer