[android-developers] Re: drawing lines on top of a image view

2010-08-09 Thread Neeraj Arora
You need to override the ImageView constructor with attributeSet.
Define public CustomDrawableView (Context context, AttributeSet
attrs)  as well..
Your layout file looks for this constructor.

Neeraj



On Jul 16, 7:55 am, Jags jag...@gmail.com wrote:
 my custom view looks as below
 ___

 package com.mypackage;

 import java.util.ArrayList;
 import java.util.List;

 import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.drawable.ShapeDrawable;
 import android.graphics.drawable.shapes.RectShape;
 import android.widget.ImageView;

 public class CustomDrawableView extends ImageView {
         // private ShapeDrawable mDrawable;
         public int imageid = 0;
         ShapeDrawable bgDrawable = null;
     ListShapeDrawable ls = new ArrayListShapeDrawable();
     final int COUNT_SUMMERY = 3;
     final int VERTICAL_OFFSET = 200;
     final int HORIZENTAL_OFFSET = 20;
     final int HORIZENTAL_GAP = 85;
     final int VERTICAL_Y_POINT = 15;
     final int VERTICAL_MAX_HEIGHT = 195;
     final int HORIZENTAL_WIDTH = 60;
     final int percentage[] = {25, 40, 35};
         public CustomDrawableView(Context context, int id) {
                 super(context);

                 imageid = id;

                 switch(id) {
                 case R.drawable.summarychart:
                         for(int i = 0; i  COUNT_SUMMERY; i++) {
                                 int x = HORIZENTAL_OFFSET + (HORIZENTAL_GAP * 
 i);
                                 int width = HORIZENTAL_WIDTH;
                                 int height = VERTICAL_MAX_HEIGHT * 
 percentage[i] / 100;
                                 int y = VERTICAL_OFFSET + VERTICAL_Y_POINT + 
 VERTICAL_MAX_HEIGHT -
 height;

                                 ShapeDrawable objDrawable = new 
 ShapeDrawable(new RectShape());
                                 int color = 0;
                                 switch(i) {
                                 case 0:
                                         color = Color.RED;
                                         break;
                                 case 1:
                                         color = Color.GREEN;
                                         break;
                                 case 2:
                                         color = Color.YELLOW;
                                         break;
                                 }
                                 objDrawable.getPaint().setColor(color);
                                 objDrawable.setBounds(x, y, x + width, y + 
 height);
                                 ls.add(objDrawable);
                         }
                         break;
                 default:
                         break;
                 }

                 int x = 0;
                 int y = 0;
                 int width = 320;
                 int height = 480;
                 bgDrawable = new ShapeDrawable(new RectShape());
                 bgDrawable.getPaint().setColor(0x);
                 bgDrawable.setBounds(x, y, x + width, y + height);
         }

         protected void onDraw(Canvas canvas) {
 /*              // Draw the white background
                 // bgDrawable.draw(canvas);
                 // Draw the bitmaps
                 Bitmap bmp = BitmapFactory.decodeResource(getResources(),
 imageid);
         canvas.drawBitmap(bmp, 0, VERTICAL_OFFSET, null);
 */        // Draw bars
         super.onDraw(canvas);

                 for(int i = 0; i  COUNT_SUMMERY; i++) {
                 ShapeDrawable objDrawable = ls.get(i);
                 objDrawable.draw(canvas);
         }
         }

 }

 

 now i do in layout

 com.mypackage.CustomDrawableView
                 android:layout_width=wrap_content
 android:layout_height=wrap_content
                 android:src=@drawable/mychart /

 but in layout i see a message
 NoSuchMethodException:com.mypackage.CustomDrawableView.init(Android.conte 
 xt.Context,
 Android.util.AttributeSet)

 and while i run it crashes. if i uncomment the drawable way, then it
 works, but other layouts are not displayed.

 any help is appreciated

 thanksin advance
 jags

 ___
 On Jul 13, 9:45 pm, Matty busbus...@gmail.com wrote:



  If you want to draw on top of an ImageView, I would extend it and
  override it's onDraw method.  This provides you a [relative] canvas to
  draw on.  Just be sure to call super.onDraw() if you want the image to
  show up also.

  On Jul 13, 11:23 am,Jagsjag...@gmail.com wrote:

   I am trying to put a background image and draw on top of that screen.
   I assumed activity will have a on draw method, but it does not have.
   it seems i need to use surfaceview. Can I put a surfaceview on top of
   the image view and make it transparent ? any example/tutorial i can
   

[android-developers] Re: drawing lines on top of a image view

2010-07-16 Thread Jags

my custom view looks as below
___

package com.mypackage;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RectShape;
import android.widget.ImageView;

public class CustomDrawableView extends ImageView {
// private ShapeDrawable mDrawable;
public int imageid = 0;
ShapeDrawable bgDrawable = null;
ListShapeDrawable ls = new ArrayListShapeDrawable();
final int COUNT_SUMMERY = 3;
final int VERTICAL_OFFSET = 200;
final int HORIZENTAL_OFFSET = 20;
final int HORIZENTAL_GAP = 85;
final int VERTICAL_Y_POINT = 15;
final int VERTICAL_MAX_HEIGHT = 195;
final int HORIZENTAL_WIDTH = 60;
final int percentage[] = {25, 40, 35};
public CustomDrawableView(Context context, int id) {
super(context);

imageid = id;

switch(id) {
case R.drawable.summarychart:
for(int i = 0; i  COUNT_SUMMERY; i++) {
int x = HORIZENTAL_OFFSET + (HORIZENTAL_GAP * 
i);
int width = HORIZENTAL_WIDTH;
int height = VERTICAL_MAX_HEIGHT * 
percentage[i] / 100;
int y = VERTICAL_OFFSET + VERTICAL_Y_POINT + 
VERTICAL_MAX_HEIGHT -
height;

ShapeDrawable objDrawable = new 
ShapeDrawable(new RectShape());
int color = 0;
switch(i) {
case 0:
color = Color.RED;
break;
case 1:
color = Color.GREEN;
break;
case 2:
color = Color.YELLOW;
break;
}
objDrawable.getPaint().setColor(color);
objDrawable.setBounds(x, y, x + width, y + 
height);
ls.add(objDrawable);
}
break;
default:
break;
}


int x = 0;
int y = 0;
int width = 320;
int height = 480;
bgDrawable = new ShapeDrawable(new RectShape());
bgDrawable.getPaint().setColor(0x);
bgDrawable.setBounds(x, y, x + width, y + height);
}

protected void onDraw(Canvas canvas) {
/*  // Draw the white background
// bgDrawable.draw(canvas);
// Draw the bitmaps
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
imageid);
canvas.drawBitmap(bmp, 0, VERTICAL_OFFSET, null);
*/// Draw bars
super.onDraw(canvas);

for(int i = 0; i  COUNT_SUMMERY; i++) {
ShapeDrawable objDrawable = ls.get(i);
objDrawable.draw(canvas);
}
}
}




now i do in layout

com.mypackage.CustomDrawableView
android:layout_width=wrap_content
android:layout_height=wrap_content
android:src=@drawable/mychart /

but in layout i see a message
NoSuchMethodException:com.mypackage.CustomDrawableView.init(Android.context.Context,
Android.util.AttributeSet)


and while i run it crashes. if i uncomment the drawable way, then it
works, but other layouts are not displayed.

any help is appreciated

thanksin advance
jags

___
On Jul 13, 9:45 pm, Matty busbus...@gmail.com wrote:
 If you want to draw on top of an ImageView, I would extend it and
 override it's onDraw method.  This provides you a [relative] canvas to
 draw on.  Just be sure to call super.onDraw() if you want the image to
 show up also.

 On Jul 13, 11:23 am,Jagsjag...@gmail.com wrote:



  I am trying to put a background image and draw on top of that screen.
  I assumed activity will have a on draw method, but it does not have.
  it seems i need to use surfaceview. Can I put a surfaceview on top of
  the image view and make it transparent ? any example/tutorial i can
  refer to ?- Hide quoted text -

 - Show quoted text -

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at

[android-developers] Re: drawing lines on top of a image view

2010-07-13 Thread Matty
If you want to draw on top of an ImageView, I would extend it and
override it's onDraw method.  This provides you a [relative] canvas to
draw on.  Just be sure to call super.onDraw() if you want the image to
show up also.



On Jul 13, 11:23 am, Jags jag...@gmail.com wrote:
 I am trying to put a background image and draw on top of that screen.
 I assumed activity will have a on draw method, but it does not have.
 it seems i need to use surfaceview. Can I put a surfaceview on top of
 the image view and make it transparent ? any example/tutorial i can
 refer to ?

-- 
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en