2

そこで、いくつかの画像を挿入して操作する小さなコードを作成しました。今の私の主な問題は、これが非常に醜くて長いことです。もっときれいにするために何かできることはないかと思っていました。

    RelativeLayout mRelativeLayout = (RelativeLayout) findViewById(R.id.board);

    ImageView i = new ImageView(this);
    i.setImageResource(R.drawable.blue_1);
    i.setId(400);

    ImageView j = new ImageView(this);
    j.setImageResource(R.drawable.red_1);
    j.setId(401);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(40,62);
    params.addRule(mRelativeLayout.ALIGN_PARENT_BOTTOM);
    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(40,62);
    params1.addRule(mRelativeLayout.ALIGN_PARENT_BOTTOM);
    params1.addRule(mRelativeLayout.RIGHT_OF, 400);    

    mRelativeLayout.addView(i, params);
    mRelativeLayout.addView(j, params1);
    setContentView(mRelativeLayout);

たとえば、layoutparams を 1 つだけ試してみましたが、最初の画像を追加した後に変更を加えても、両方の画像に影響するようです。

また、画像を印刷するのに役立つ文字列として blue_1 o red_1 などの文字列を返すことができる関数がありますが、画像を取得するために文字列を i.setImageResource に入れることはできません:(

私に何ができる?

4

1 に答える 1

2

コードを整理する最善の方法は、ほとんどすべてのコードを取り除き、レイアウトを XML ファイルで定義することです。setContentView(R.layout.my_layout_name)そうすれば、ウィジェットとレイアウト パラメータを自分で手動で作成する代わりに呼び出すことができます。XML でのレイアウトの宣言にあまり慣れていない場合は、dev docsをご覧ください。あるいは、UI のさまざまな部分を個別にインスタンス化する必要がある場合は、レイアウトLayoutInflater.

2 番目の質問では、ResourcesクラスにgetIdentifierメソッドがあります。次のようなことができます。

getResources().getIdentifier("blue_1", "drawable", "com.my.package.here")

の代わりに使用できるリソース ID が返されますR.drawable.blue_1

于 2010-07-21T21:43:54.390 に答える