teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追加

2021/11/18 10:08

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -1,2 +1,17 @@
1
1
  invalidate しても onCreate は実行されません。
2
- setPhoto で実際に画像取得し直した上で再表示させる必要があるでしょう。
2
+ setPhoto で実際に画像取得し直した上で再表示させる必要があるでしょう。
3
+
4
+ ----
5
+
6
+ GameView に setmBitmap というメソッドがあり、これが画像を切り替えるものとして動作しているのであれば使えると思いますが、コンストラクタで行っている bitmapW/bitmapH を更新していないので(両変数の使い方が見えないので確実な所は分かりませんが) 動作しなさそうにも見えます。
7
+ コンストラクタに従えば setPhoto は次のようになると思います。
8
+ ```java
9
+ public void setPhoto(int photo) {
10
+ this.photo = photo;
11
+ mBitmap = ((BitmapDrawable)mycontext.getDrawable(mImageResources[photo])).getBitmap();
12
+ bitmapW = mBitmap.getWidth()/level;
13
+ bitmapH = mBitmap.getHeight()/level;
14
+ invalidate();
15
+ }
16
+ ```
17
+ なお、 [Resources クラスの getDrawable(int)](https://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int)) メソッドは API22 から非推奨になっていまして、 getDrawable(int,Theme) もしくは Context クラスの getDrawable(int) を使うことになっています。

1

コメントと間違えてしまったので内容更新

2021/11/18 10:08

投稿

jimbe
jimbe

スコア13355

answer CHANGED
@@ -1,2 +1,2 @@
1
- コードはマークダウン記法を用いてご提示ください。
2
- マークダウンに付きましてはヘルプをご参照くだ
1
+ invalidate しても onCreate 実行れません
2
+ setPhoto で実際に画像取得し直した上で再表示させる必要があるでしょう。