以编程方式将ImageView添加到Layout

时间:2013-02-26 19:48:28

标签: android android-layout android-imageview

我想创建将从屏幕上方向下移动的图像。

到今天为止,我有这个:

ImageView mario = (ImageView) findViewById(R.id.mario);
TranslateAnimation anim = new TranslateAnimation(0f, 0f, 0, 400);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(800);
mario.startAnimation(anim);

问题是我必须在布局上的xml文件上设置imageview,这段代码只创建1张图片。

我想对应用程序进行编程,以在屏幕的上半部分创建一些图像(例如在循环中)并让它们下拉到屏幕上。 (这里我在这里使用TranslateAnimation)。 我找到了类似的东西:

ImageView mario = (ImageView) findViewById(R.drawable.mario);

但我不知道如何设置不在xml文件中的ImageView的位置(是否可能?)。 我想创建LinearLayout并将其添加到ImageView。但是如何将linearlayout添加到现有布局?

提前致谢:)

2 个答案:

答案 0 :(得分:4)

您可以使用

之类的内容创建布局
View view = (View) findViewById(R.layout.current_layout); //the layout you set in `setContentView()`
LinearLayout picLL = new LinearLayout(CurrentActivity.this);
picLL.layout(0, 0, 100, 0);
picLL.setLayoutParams(new LayoutParams(1000, 60));
picLL.setOrientation(LinearLayout.HORIZONTAL);
((ViewGroup) view).addView(picLL);

您在layout()中传递的参数显然取决于您想要的内容。然后,您可以创建单独的Views以添加到刚刚创建的Layout。但我强烈建议您阅读文档,了解这里可以做些什么。

ViewGroup

View

修改

ImageView myImage = new ImageView(this);
picLL.addView(myImage);
//set attributes for myImage;

答案 1 :(得分:1)

使用以下代码可以动态添加图像

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ImageView imageview = new ImageView(MainActivity.this);
 RelativeLayout relativelayout = (RelativeLayout)findViewById(R.id.relativeLayout);
 LinearLayout.LayoutParams params = new LinearLayout
 .LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

 // Add image path from drawable folder.
 imageview.setImageResource(R.drawable.demo_new_image);
 imageview.setLayoutParams(params); 
 relativelayout.addView(imageview); 

 }
}