2011-09-15 14 views
2

質問には、私はランダムな位置で表示したい画像ビュー(カードのデッキ)が52個あります。ランダムな位置でレイアウトに画像ビューを追加する最良の方法

私は現在、この持っている:これは今のところ動作しますが、後に、私は特定の場所ですべてのカードを表示する必要がありますし、それだけのマージンですべてを配置する私には思えるいけない

for (Card card : deck.getAll()) { 
     ImageView iv = new ImageView(this); 
     RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(57, 105); 
     if (random) { 
      lParams.leftMargin = (int)Math.ceil(Math.random()*(metrics.widthPixels - 57)); 
      lParams.topMargin = (int)Math.ceil(Math.random()*(metrics.heightPixels - 105)); 
     } else { 
      //if (metrics.widthPixels < ((i + 1) * 57)) {i = 0;++j;} 
      if (i > 12) {i = 0;++j;} 
      lParams.leftMargin = i*60; 
      lParams.topMargin = j*107; 
      ++i; 
     } 
     iv.setRotation((float)Math.ceil(Math.random()*(360))); 
     iv.setId(card.getInt()); 

     layout.addView(iv, lParams); 

を。

ありがとうございました。

+0

私はちょっとした作業の後、解決策を見つけました。 http://stackoverflow.com/a/35406696/3741769 – Ahsanwarsi

答えて

1

キャンバスを使用してビットマップを直接描画する方法については、こちらをご覧ください。 1つのビューをレンダリングするために配置し、次にそのカードのonDrawを実装して、その1つのビューのキャンバスにカードをレンダリングします。

カードを移動する必要があるたびに、キャンバスを再描画し、そうでない場合は必要ありません。基本的に2dゲームの仕組みです。多くのチュートリアルがあり、それは全く時間がかかりません。

+0

私は正しい方向に向いてくれてありがとう。次のリンクは、私に確かな出発点を与えます:http://developer.android.com/guide/topics/graphics/index.html#draw-with-canvas(この質問を投稿する前にこれを見つけたはずです) – user458753

+0

あなたあなたを検索する必要があるとは思わなかった。 – Zulaxia

関連する問題