我正在尝试动态创建用户界面。我已经成功创建了一个视图并加载了我的背景图像。我创建了两个额外的小视图项目以在后台显示。我的问题是我找不到任何告诉我如何绘制小视图的建议/指示。它似乎应该是一个微不足道的练习,我猜它只是找到正确的引用。希望有人可以指出我正确的方向。
这是我的活动:
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);
}
这是View;
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画布的引用指针。 说实话,我发现整个活动 - 视图关系令人困惑。
编辑:我在本教程的基础上采用了不同的方法 http://www.kellbot.com/2009/06/android-hello-circle/ 它使用FrameLayout,似乎我可以实现我的目标。
答案 0 :(得分:0)
要动态添加视图以查看您的类必须从ViewGroup或LinearLayout类扩展,那么您将能够调用方法addView。
答案 1 :(得分:0)
在幽灵视图中首先添加一个布局,例如线性或相对。然后,只有您能够在该布局中添加视图,而您只能将视图添加到xml文件中。
或者您可以创建动态布局,然后只能在该布局中添加视图。
RelativeLayout relative= new RelativeLayout(findViewById(R.id.your relativeLayoutID));
relative.addView(child);
child可以是任何按钮textview和widget。