2010-07-21 74 views
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,但似乎影响到这两个影像时,即使我对它进行更改添加的第一张照片之后。

而且我有可以返回一个字符串的函数,例如blue_1Øred_1作为一个字符串来帮我打印我的图片,但它不会让我把串入i.setImageResource知趣:(

我能做些什么?

+1

是否有你试图在代码而不是在布局XML文件中做到这一点的原因?是否有理由试图编写字符串来引用资源而不是自己使用资源ID值? – adamp 2010-07-21 21:31:44

+0

是的,我想动态的,试图做一个纸牌游戏:)所以我会更容易画在手上的例子只有一个hand.getCard();进入setImageResource – 2010-07-21 21:36:35

回答

2

手动整理你的代码了。将摆脱它对几乎所有的,只是在一个XML文件中定义你的布局。这样,你可以叫setContentView(R.layout.my_layout_name),而不是创造的最好方法如果你不太熟悉用XML声明布局,看看the dev docs。或者,如果你需要分别实例化UI的不同部分,你可以膨胀布局与LayoutInflater

对于第二个问题,Resources类有一个getIdentifier方法。你可以做这样的事情:

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

这将返回资源ID,然后你就可以使用,而不是R.drawable.blue_1

+0

啊真棒与最后一部分是我正在寻找:)我也看看inflater以及:) – 2010-07-21 21:45:08

+1

这也帮我了一下:) getResources()。getIdentifier(“blue_1”,“drawable” ,getPackageName()); – 2010-07-21 22:06:50