0

Androidのサウンドボードを作っています。現在、この特定のカテゴリに 12 ページあります。各ページには独自のアクティビティがあり、各ページは 10 個のボタンです。

今日、ある人から、1 つのアクティビティだけを使用してページ間で setcontentview (XML) を切り替えるのではなく、多くのアクティビティを使用するのはなぜかと尋ねられました。

考えてみましたが、悪くないようです。しかし、それが本当に良いかどうかについては興味があります。

つまり、この 1 つのアクティビティには、その onclick および onlongclick メソッド用に 100 以上の switch case ステートメントがあることになります。200 を超える変数があります。200 を超えるリスナーを追加する必要があります (ただし、最初にすべてではなく、特定のページを読み込むときに 10 のリスナーを設定できると思います。新しい XML が表示される前に、現在のリスナーを解放することもできます)。

Android はこのような単一のアクティビティを処理できますか? もっとサウンドを追加する予定なので、いつの日か 20 ページほどになるかもしれません。

4

2 に答える 2

0

はい、すべてを1つのアクティビティにします。異なるActivitiesものは、実際には完全に異なるユースケースにのみ使用する必要があります。ListView1つのアクティビティ内で、またはGridView、または「ViewPager」を使用することを検討してください。

アダプターを使用するListViewまたは何かを使用することになった場合、アクティビティは次のようになります。

class MyActivity extends Activity{

 int mySounds[] = {R.raw.s1, R.raw.s2}; //etc. could also be a 2d array, one for each page of sounds.

 protected void onCreate(Bundle b)
 {
   setContentView(R.layout.myactivity);

   ListView lv = (ListView) findViewById(R.id.myactivity_listView);

   lv.setAdapter(new SoundAdapter(this));

 }

class SoundAdapter extends BaseAdapter{
  Context cont;
  SoundAdapter(Context c){
   this.cont = c;
  }

  getView(int id, View convertView){
   if(convertView == null){
     ...
     //inflate view to be a row/gridcell
   }

   convertView.setOnClickListener(new SoundClickListener(mySounds[id]));
  }



}

 class SoundClickListener extends View.OnClickListener{

   int resId;

   public SoundClickListener(int resId)
   {
     this.resId = resId;
   }

   protected void onClick(View v){
     playSoundWithId(resId);
   }

 }

}
于 2012-05-06T06:21:09.850 に答える
0

私はあなたのポイントのいくつかに個別に対処します:

  • アンドロイドはそれを処理できるでしょうか。はい。とはいえ、物事をデザインする方法については賢くあるべきです。

  • TabActivity実行しているバージョンに応じて、またはのいずれかを調べる必要がありますFragment。これらからアクティビティを作成するとButton、任意の時点で 10 ほどの s にリスナーがいることに基づくことができます。

  • さらに急進的なアイデアを次に示しActivityます。表示するボタンに関するコンストラクター情報を継承して渡すマザー クラスを作成します。このように、 には 10 個程度のボタンしかありませActivityんが、12 個のアクティビティがあります。

  • さらに過激なアイデア: ボタンを拡張し、それを の拡張機能の内部クラスとして配置しますActivity。これは、いくつかの興味深い場所につながる可能性があります。

もう少し適切な質問をしていただければ、より適切な回答を提供できますが、ここにいくつかのアイデアがあります。幸運を。

于 2012-05-06T06:17:28.117 に答える