2011-12-06 21 views
3

ユーザインタフェースを動的に作成しようとしています。私は正常にビューを作成し、私の背景イメージをロードしました。背景に表示する2つの追加の小さなビュー項目を作成しました。私の問題は、小さな見解を描く方法を教えてくれるアドバイスや指示を見つけることができなかったことです。それは些細な行為でなければならないと思われ、私はそれが正しい参照を見つけることであると推測しています。誰かが私を正しい方向に向けることを願っています。ここでアクティビティから動的にビューコンポーネントを追加する方法

は私の活動です:

public class GhostActivity extends Activity implements OnTouchListener 
{ 
private DrawView ghostView; 
public Card mCard1, mCard2; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    // ToDo add your GUI initialization code here   
    super.onCreate(savedInstanceState); 
    // requesting to turn the title OFF 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // making it full screen 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    ghostView = new DrawView(this); 
    setContentView(ghostView); 

    //get the window size 
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 

    Context context = getApplicationContext(); 
    //create view items with initial positions 
    Point startPoint; 
    startPoint = new Point(); 
    startPoint.x = 5; 
    startPoint.y = 3; 
    mCard1 = new Card(context, 1, R.drawable.bol_geel, startPoint); 
    startPoint.x = 5; 
    startPoint.y = 43; 
    mCard2 = new Card(context, 2, R.drawable.bol_rood, startPoint); 

    //now display them on the ghostView *****************HOW? 

    // set the callbacks 
    ghostView.setOnTouchListener(this); 
    mCard1.setOnTouchListener(this); 
    mCard2.setOnTouchListener(this); 

    } 

、ここでは図です。

public class DrawView extends View 
{ 
Drawable bg ; 
public DrawView(Context context) { 
    super(context); 
    //setFocusable(true); 
    Drawable bg = this.getResources().getDrawable(R.drawable.bubbleblue480x800); 
    setBackgroundDrawable(bg); 
    } 


@Override protected void onDraw(Canvas canvas) { 
// canvas.drawColor(0x0000000);  //if you want another background color  

    //draw on the canvas 
    } 
} 

編集:私の問題は、ghostViewキャンバスへのポインタを渡す必要があると考えています。 ghostView内で子を作成してから.drawメソッドを呼び出すと、予想どおりに表示されます。

@Override protected void onDraw(Canvas canvas) { 
    canvas.drawColor(0x0000000);  //if you want another background color  

    //draw the cards on the canvas 
    mCard1.draw(canvas); 
    mCard2.draw(canvas); 
} 

ので、この時点で私はghostviewのキャンバスへの参照ポインタを取得する方法を疑問に思って。 正直言って私はアクティビティ - ビューの関係全体が混乱しているのを発見しています。

編集:私はそれがでframeLayoutを使用し、私が私の目的を達成することができそうです http://www.kellbot.com/2009/06/android-hello-circle/ このチュートリアルで詳細に基づいて異なるアプローチをとっています。

答えて

0

Viewを動的に表示してViewGroupまたはLinearLayoutクラスから継承する必要がある場合は、addViewメソッドを呼び出すことができます。

+0

ありがとうございますs_id、私はさらにViewGroupを研究します。 – Squiggles

0

ゴーストビューの内側に、最初に線形または相対的なレイアウトを追加します。その後、レイアウト内にビューを追加するだけで、XMLファイルにビューを追加することはできません。

ダイナミックレイアウトを作成して、そのレイアウト内にビューを追加することができます。

RelativeLayout relative= new RelativeLayout(findViewById(R.id.your relativeLayoutID)); 
    relative.addView(child); 

子供は何でもボタンのテキストビューとウィジェットになります。

+0

ありがとうございますが、私は特に定義されたレイアウトの制限を避けようとしています。私が使用する唯一のもの(絶対)は廃止予定です。 – Squiggles

関連する問題