public class Hud{ public TextElement gameTimer; CameraView mCameraView; private HashMap mItems = new HashMap(); private Integer mScreenWidth; private Integer mScreenHeight; //private ImageView imgView; private HashMap imgViews = new HashMap(); private LinearLayout ll; private Integer n; public Hud(CameraView cameraView){ mCameraView = cameraView; mScreenWidth = mCameraView.screenWidth; mScreenHeight = mCameraView.screenHeight; //Get an instance of the GameTimer gameTimer = new TextElement("GameTimer", mScreenWidth/2, 25); //imgView = new ImageView(mCameraView.getContext()); //We use a layout to contain the buttons (or any view) ll = new LinearLayout(mCameraView.getContext()); ll.setOrientation(LinearLayout.HORIZONTAL); } public void updateGameTimer() { //update GameTimer long millis = System.currentTimeMillis() - mCameraView.startTime ; int seconds = (int) (millis / 1000); int minutes = seconds / 60; seconds = seconds % 60; gameTimer.setText(String.format("%d: %02d", minutes, seconds)); } public void updateItems() { mItems = Simulation.items; ll = new LinearLayout(mCameraView.getContext()); for (Item item : mItems.values()) { Integer id = item.getIdentifier(); ImageView imgView = new ImageView(mCameraView.getContext()); imgView.setImageBitmap(item.getImage()); imgView.setId(id); //We set the layout parameters LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //SET THE MARGIN HERE layoutParams.setMargins(30 , mScreenHeight - item.getImage().getHeight() - 20, 0, 0); ImageView.OnClickListener listener = new ImageView.OnClickListener() { public void onClick(View v) { Simulation.items.get(v.getId()).useItem(); Simulation.items.remove(v.getId()); imgViews.remove(v.getId()); updateItems(); } }; imgView.setOnClickListener(listener); //Add it to our linear layout ll.addView(imgView, layoutParams); //Measure and layout the linear layout before drawing it ll.measure(MeasureSpec.getSize(ll.getMeasuredWidth()), MeasureSpec.getSize(ll.getMeasuredHeight())); ll.layout(0, 0, MeasureSpec.getSize(imgView.getMeasuredWidth()), MeasureSpec.getSize(imgView.getMeasuredHeight())); imgViews.put(item.getIdentifier(), imgView); } } public void draw(Canvas canvas) { //GameTimer gameTimer.Draw(canvas); //Finally draw the linear layout on the canvas ll.draw(canvas); if (imgViews.containsKey(1)) { //imgViews.get(1).performClick(); } } }