bitmapを他アクティビティに移動できない
解決したいこと
AndroidStudioでKotlinを用いてスマホアプリを作っています。
ある画像を生成し、その画像を別アクティビティ上で表示させたいのですができません。
解決方法、助言を教えてください。
発生している問題・エラー
現状最初のアクティビティ(Activity1)でViewの状態で出力することはできています。
調べた限り私が行うべき手順は以下の2通りあると考えています。
[1]
Activity1のViewをBitmapに保存
↓
BitmapをintentでActivity2に移す
↓
Activity2上でImageViewにセットする
[2]
Activity1のViewをBitmapに保存しアプリの内部ストレージに保存
↓
Activity2上で内部ストレージに保存したBitmapを参照しImageViewにセットする
どちらの方法に対してもうまく行きませんでした。
該当するソースコード
以下はActivity1.ktです。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val r1 = intent.getStringExtra("ratio1")
val r2 = intent.getStringExtra("ratio2")
val r3 = intent.getStringExtra("ratio3")
val r4 = intent.getStringExtra("ratio4")
val r5 = intent.getStringExtra("ratio5")
val r6 = intent.getStringExtra("ratio6")
val r7 = intent.getStringExtra("ratio7")
val r8 = intent.getStringExtra("ratio8")
val r9 = intent.getStringExtra("ratio9")
val r10 = intent.getStringExtra("ratio10")
val myView : View = MyView(this, r1!!, r2, r3, r4, r5, r6, r7, r8, r9, r10)
// setContentView(myView)
val capture : Bitmap? = getViewCapture(myView)
val intent = Intent(this, RouletteScreen::class.java)
intent.putExtra("capture",capture)
startActivity(intent)
//val capture ~ strtActivityまでの行をコメントアウトしsetContentView(myView)のコメントアウトを外すと
//画面遷移せずに表示させたい画像が表示されます。
}
private fun getViewCapture(view: View): Bitmap? {
view.isDrawingCacheEnabled = true
// Viewのキャプチャを取得
val cache = view.drawingCache ?: return null
val screenShot = Bitmap.createBitmap(cache)
view.isDrawingCacheEnabled = false
return screenShot
}
以下はActivity2.ktです。
@SuppressLint("ResourceType")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity2)
val intent1 = intent
val bmp = intent1.getParcelableExtra<Bitmap>("capture")
val image2 = findViewById<ImageView>(R.id.imageView2)
//activity2.xmlではサンプルとして別の画像が表示されており、その画像を置き換える処理を行いたいです。
image2.setImageBitmap(bmp)
val animation: Animation = AnimationUtils.loadAnimation(this, R.anim.animation1)
image2.startAnimation(animation)
//以下省略
このまま実行させるとエラー文は出ませんが、Activity2上で画像が出力されず真っ白になってしまいます。
自分で試したこと
以下の記事などを参考にしました。
0