所以我做了一小段代码,插入并操作了一些图像。现在我的主要问题是,这是非常丑陋和漫长的,我想知道是否可以采取任何措施使其更漂亮。
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);
例如我尝试过只使用一个布局,但即使我在添加第一张图片后对其进行了更改,它似乎也会影响两张图片。
此外我还有一个函数,可以返回一个字符串,如blue_1 o red_1作为字符串,以帮助我打印我的图像,但它不允许我将字符串放入i.setImageResource来获取图片:(
我该怎么办?
答案 0 :(得分: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,然后您可以使用该ID而不是R.drawable.blue_1
。