ボタンのクリックでアプリケーションの背景をランダムに変更する単純なアプリを作成しています。
アプリケーションが使用する必要がある画像の 5 つの ID を含む配列リストがあります。
ArrayList<Integer> imageID = new ArrayList<Integer>();
imageID.add(R.drawable.frame_blue);
imageID.add(R.drawable.frame_green);
imageID.add(R.drawable.frame_lilac);
imageID.add(R.drawable.frame_pink);
imageID.add(R.drawable.frame_yellow);
レイアウト xml ファイルには、nextとpreviousの 2 つのボタンがあります。どちらも、クリックするとアプリケーションの背景を変更する必要があります。
この配列リストから画像の背景を変更します。
iM.setBackgroundResource(imageID.get(r.nextInt(5)));
私のレイアウトxmlは次のようになります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parentLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="76dp"
android:onClick="previous"
android:text="Previous" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:onClick="next"
android:text="Next" />
</RelativeLayout>
ボタンのクリック、ImageView の背景の変更ですべて正常に動作しますが、問題は背景がスムーズに変更されないことです。
しばらくハングします。メインの UI スレッドが 1 ~ 2 秒間ブロックされ、アプリケーションがハングしたように見える場合があります。
ハングの意味: ボタンが数秒間クリックされたままになることがあります。
asynctask を試してみましたが成功しませんでした。スムーズに変更する方法はありますか?