Can you layer different views and/or layouts on top of each other? I
thought maybe I could use a ViewGroup with an absolute layout for the
buttons and my custom ClockView. Can you put the absolute layout with
a transparent background on top of the ClockView?

On Mar 9, 11:14 pm, xspotlivin <[email protected]> wrote:
> Ok, thanks for the replies. I'm going to describe what I'm trying to
> do better, because I'm still unsure of the solution, and I could
> really use some help.
>
> I have a clock application (how can you attache an image). For each
> shaded region I want to place abuttonon top of it (a differentbuttondepending 
> on some xml data). I don't know how to create abuttonfrom the attached image 
> and then draw it in the correct spot.
> My xml data has the time of the shaded region, so I can figure out
> what angle to put thebutton. Below is the relevant code from my
> ClockView class. The for loop is looping through each element in an
> xml document (which I pass from the activity class).
>
> Java:
> public class ClockView extends View {
>
>      protected Document clockXML;
>
>      public ClockView(Context context) {
>           super(context);
>           this.setBackgroundDrawable(getResources().getDrawable
> (R.drawable.clockbackgroundwithoutnames));
>
>      }
>     �...@override
>      protected void onDraw(Canvas canvas) {
>
>           // Clock-size rectangle to draw compliance windows
>           RectF clockRect = new RectF(86, 6, 394, 314);
>
>           // Create a node list containing each reminder
>           NodeList reminderNodes = this.clockXML.getElementsByTagName
> ("Reminder");
>           int reminderLength = reminderNodes.getLength();
>
>           // Loop through each reminder drawing compliance windows
>           for (int i=0; i < reminderLength; i++) {
>                String timeScheduledString = reminderNodes.item
> (i).getFirstChild().getFirstChild().getNodeValue();
>                float timeScheduled = Float.valueOf
> (timeScheduledString.trim());
>                String complianceWindowString = reminderNodes.item
> (i).getFirstChild().getNextSibling().getFirstChild().getNodeValue();
>                float complianceWindow = Float.valueOf
> (complianceWindowString.trim());
>                String administered = reminderNodes.item
> (i).getFirstChild().getNextSibling().getNextSibling().getFirstChild
> ().getNodeValue().trim();
>
>                float compStartAngle = -90 + ((timeScheduled*360)/24) -
> (complianceWindow*15);
>                float complianceSweepAngle = (complianceWindow*2)*15;
>
>                // If we are in the daytime.
>                if (compStartAngle < 90 && compStartAngle >= -90) {
>                     // If a reminder is scheduled in the daytime, but
> window overlaps into the night.
>                     if ((compStartAngle + complianceSweepAngle) > 90)
> {
>                          // Compute new angles and sweeps
>                          float startAngle1 = compStartAngle;
>                          float sweepAngle1 = 90 - startAngle1;
>                          // Draw for daytime
>                          canvas.drawArc(clockRect, startAngle1,
> sweepAngle1, true, this.amColor);
>                          float sweepAngle2 = complianceSweepAngle -
> sweepAngle1;
>                          // Draw for nighttime
>                          canvas.drawArc(clockRect, 90, sweepAngle2,
> true, this.pmColor);
>                     // Else, just draw normally.
>                     } else {
>                          canvas.drawArc(clockRect, compStartAngle,
> complianceSweepAngle, true, this.amColor);
>                     }
>                // If we are in the nighttime
>                } else if (compStartAngle >= 90) {
>                     // If a reminder is scheduled in the nighttime,
> but window overlaps into the day.
>                     if ((compStartAngle + complianceSweepAngle) > 270)
> {
>                          // Compute new angles and sweeps
>                          float startAngle2 = compStartAngle;
>                          float sweepAngle3 = 270 - compStartAngle;
>                          // Draw for nighttime
>                          canvas.drawArc(clockRect, startAngle2,
> sweepAngle3, true, this.pmColor);
>                          float sweepAngle4 = complianceSweepAngle -
> sweepAngle3;
>                          // Draw for daytime
>                          canvas.drawArc(clockRect, 270, sweepAngle4,
> true, this.amColor);
>                     // Else, just draw normally.
>                     } else {
>                          canvas.drawArc(clockRect, compStartAngle,
> complianceSweepAngle, true, this.pmColor);
>                     }
>                // If a reminder is scheduled in the early daytime, but
> window overlaps into the nighttime (backwards)
>                } else {
>                     // Compute new angles and sweeps
>                     float startAngle3 = compStartAngle;
>                     float sweepAngle5 = -90 - compStartAngle;
>                     // Draw for nighttime
>                     canvas.drawArc(clockRect, startAngle3,
> sweepAngle5, true, this.pmColor);
>                     float sweepAngle6 = complianceSweepAngle -
> sweepAngle5;
>                     // Draw for daytime
>                     canvas.drawArc(clockRect, -90, sweepAngle6, true,
> this.amColor);
>                }
>
>                // I want to create the buttons here for each
> reminder
>
>           }
>      }
>
> }
>
> I'm sure if seeing my activity class is relevant. Know that my
> activity class contains the same xml document. My onCreate just sets
> the contentView to the ClockView and starts a thread to update the xml
> document. How do I achieve putting these buttons where I want them?
> I'm almost positive I can't do this in the layout xml because the
> buttons location is determined by the xml data.
>
> Suggestions?
>
> On Mar 9, 12:23 am, Anonymous Anonymous <[email protected]>
> wrote:
>
> > Something like this?
>
> > <?xml version="1.0" encoding="utf-8"?>
> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
> >      android:orientation="vertical" android:layout_width="fill_parent"
> >      android:layout_height="fill_parent">
>
> >      <Buttonandroid:layout_width="wrap_content"
> >           android:layout_height="wrap_content" android:text="Hello"
> >           android:background="@drawable/u_r_png" />
> >   </LinearLayout>
>
> > On Mon, Mar 9, 2009 at 9:33 AM, xspotlivin <[email protected]> wrote:
>
> > > I'd like to know how tomakeabuttonout of a PNG and display it on
> > > my canvas (using drawBitmap?). When I click on thisbutton, it will
> > > take me to a new activity. All this will be in the onClickListener.
>
> > > So, how do I take a PNG,makeabuttonwith it, and draw it on my
> > > canvas? I looked at ImageButton, but I'm unsure how it works or how to
> > > draw it on the canvas.
>
> > > Thanks for your help. A code sample would also be greatly appreciated.
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to