As I was thinking about how I would go about doing this, I remembered
something kind of similar that I did.  Here is a snippet of the XML I
used...

<ImageView
  android:id="@+id/wgt_app_icon"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:background="@drawable/widget_icon_selector"
  android:src="@drawable/widget_icon"
/>

The two most important things to notice are the android:background and
android:src properties...  The first is obvious and the second is
essentially "foreground."

You would need to have the files for each property in your res/drawable
folder.  In my particular case it was widget_icon_selector.xml and
widget_icon.png but they can be any valid drawable type... including two
images.


Assuming you are in an Activity class (or sub-class), you would get access
to the ImageView as follows:
ImageView view = (ImageView) findViewById(R.id.wgt_app_icon);

Hope that helps,
Justin

----------------------------------------------------------------------
There are only 10 types of people in the world...
Those who know binary and those who don't.
----------------------------------------------------------------------


On Tue, Jan 5, 2010 at 11:14 AM, keith greene <[email protected]>wrote:

> Well, I don't have that code anymore, I moved on to trying to create the
> bitmaps programmatically. I can do that, but as I stated, I can't for the
> life of me, figure out how to position the 2 parts at all or control which
> one appears on top of the other. Here's the code I'm trying now:
>
> package com.kgreene.gauge;
>
> import android.app.Activity;
> import android.os.Bundle;
> import android.view.View;
> import android.widget.LinearLayout;
> import android.graphics.Bitmap;
> import android.graphics.BitmapFactory;
> import android.graphics.drawable.BitmapDrawable;
> import android.graphics.Matrix;
> import android.widget.ImageView;
> import android.widget.LinearLayout.LayoutParams;
> import android.widget.ImageView.ScaleType;
>
> public class gauge extends Activity {
>     @Override
>     public void onCreate(Bundle icicle) {
>         super.onCreate(icicle);
>         LinearLayout linLayout = new LinearLayout(this);
>
>         Bitmap bmSpeedGauge = BitmapFactory.decodeResource(getResources(),
>                 R.drawable.speedo);
>         BitmapDrawable sGauge = new BitmapDrawable(bmSpeedGauge);
>
>         ImageView sgView = new ImageView(this);
>
>         // set the Drawable on the ImageView
>         sgView.setImageDrawable(sGauge);
>
>         // center the Image
>         sgView.setScaleType(ScaleType.CENTER);
>
>         // load the origial BitMap
>         Bitmap bmSpeedNeedle = BitmapFactory.decodeResource(getResources(),
>                R.drawable.speed_needle);
>
>         int width = bmSpeedNeedle.getWidth();
>         int height = bmSpeedNeedle.getHeight();
>         int newWidth = 48;
>         int newHeight = 212;
>
>         // calculate the scale - in this case = 0.4f
>         float scaleWidth = ((float) newWidth) / width;
>         float scaleHeight = ((float) newHeight) / height;
>
>         // createa matrix for the manipulation
>         Matrix matrix = new Matrix();
>         // resize the bit map
>         matrix.postScale(scaleWidth, scaleHeight);
>         // rotate the Bitmap
>         matrix.postRotate(45, 24, 180);
>
>         // recreate the new Bitmap
>         Bitmap rbmSpeedNeedle = Bitmap.createBitmap(bmSpeedNeedle, 0, 0,
>                           width, height, matrix, true);
>
>         // make a Drawable from Bitmap to allow to set the BitMap
>         // to the ImageView, ImageButton or what ever
>         BitmapDrawable bmd = new BitmapDrawable(rbmSpeedNeedle);
>
>         ImageView imageView = new ImageView(this);
>
>         // set the Drawable on the ImageView
>         imageView.setImageDrawable(bmd);
>
>         // center the Image
>         imageView.setScaleType(ScaleType.CENTER);
>
>         // add sgView to the Layout
>         linLayout.addView(sgView,
>           new LinearLayout.LayoutParams(
>                       433, 433
>                 )
>         );
>         // add ImageView to the Layout
>         linLayout.addView(imageView,
>           new LinearLayout.LayoutParams(
>                       48, 212
>                 )
>         );
>
>         // set LinearLayout as ContentView
>         setContentView(linLayout);
>     }
> }
>
> Screenshot: http://kgreene.com/android/gauge.jpg
>
> As you can see, the needle is drawn to the right of the gauge face, and
> slightly underneath it.
> I realize that I shouldn't expect them to magically appear stacked properly
> because I'm not trying to position them at all, and that is part of the
> problem. I haven't seen anything that explains how to position or layer
> bitmaps at all, aside from very vague references to using linearLayout or
> gridLayout. Also note that I'm coming from a web development background, and
> this is my first experience with java of any kind. I'm used to being able to
> position things exactly where I want them, very easily, with CSS or
> javascript.
> Basically, I'm looking for the android equivalent of the css properties
> top, left and z-index.
>
> Also, if you can point me to an example of number 2 below (creating the
> elements in XML and then accessing them programmatically) that would be
> great, as that seems to be preferable to creating everything in code.
>
> Thanks,
> Keith
>
> On Mon, Jan 4, 2010 at 10:32 PM, Justin Anderson 
> <[email protected]>wrote:
>
>> Please post your XML file and the code you are using to access the
>> different parts of it...
>>
>> ----------------------------------------------------------------------
>> There are only 10 types of people in the world...
>> Those who know binary and those who don't.
>> ----------------------------------------------------------------------
>>
>>
>> On Thu, Dec 31, 2009 at 1:09 PM, keith <[email protected]> wrote:
>>
>>> Hello all,
>>> I'm very new to android development, and I'm coming from a php/web
>>> development background. For my first exercise, I'm trying to draw a
>>> gauge face and a needle, and be able to rotate that needle to whatever
>>> direction I want (not dynamically, just by changing the angle in code
>>> and recompiling)
>>> I'm running into a problem that is 2-fold:
>>>
>>> 1, If I build the layout programmatically using LinearLayout, I can
>>> rotate the needle, but I cannot manage to get the needle to sit in the
>>> proper position on top of the gauge, in fact, I can't seem to be able
>>> to control the position of either image at all. I looked into using
>>> AbsoluteLayout, but that is depricated.
>>>
>>> 2. If I use the xml layout, I can position the gauge and needle
>>> exactly where I want them, but I cannot seem to access the needle
>>> programmatically to rotate it. I have tried setting android:@+id and
>>> using getById, but that doesn't do anything, although it doesn't throw
>>> an error either.
>>>
>>> Does anyone have any tips or references or examples on how to
>>> accomplish this seemingly easy task?
>>>
>>> Thanks,
>>> Keith
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Android Beginners" group.
>>>
>>> NEW! Try asking and tagging your question on Stack Overflow at
>>> http://stackoverflow.com/questions/tagged/android
>>>
>>> To unsubscribe from this group, send email to
>>> [email protected]<android-beginners%[email protected]>
>>> For more options, visit this group at
>>> http://groups.google.com/group/android-beginners?hl=en
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google
>> Groups "Android Beginners" group.
>>
>> NEW! Try asking and tagging your question on Stack Overflow at
>> http://stackoverflow.com/questions/tagged/android
>>
>> To unsubscribe from this group, send email to
>> [email protected]<android-beginners%[email protected]>
>> For more options, visit this group at
>> http://groups.google.com/group/android-beginners?hl=en
>>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Beginners" group.
>
> NEW! Try asking and tagging your question on Stack Overflow at
> http://stackoverflow.com/questions/tagged/android
>
> To unsubscribe from this group, send email to
> [email protected]<android-beginners%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-beginners?hl=en
>
>
-- 
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.

NEW! Try asking and tagging your question on Stack Overflow at
http://stackoverflow.com/questions/tagged/android

To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en

Reply via email to