Thanks, that was a much easier way to modify the views at drawing.
Some tips which I learned as I tested this approach:
You indicate that the ViewGroup supports static transformation with:
this.mGroupFlags = this.mGroupFlags |
FLAG_SUPPORT_STATIC_TRANSFORMATIONS;
For the modified transformation to be performed you should return true
from:
boolean getChildStaticTransformation(View child, Transformation t)
Kindest regards,
//Erik
On Aug 14, 5:12 pm, "Romain Guy" <[EMAIL PROTECTED]> wrote:
> You need to translate the canvas to the right position for each child
> and take into account the scroll offsets. I highly advise against
> overriding dispatchDraw() because it does a number of delicate things.
> The next version of the SDK will make ViewGroup.drawChild() protected
> so that you can override dispatchDraw() more safely.
>
> To move, scale and apply transparency to your Views at drawing time,
> it's a lot simpler than what you are doing. You can simply override
> the getChildStaticTransformation() method (I'm not sure of the exact
> name) and make sure your ViewGroup indicates it supports static
> transformations. Then simply return the appropriate Transformation
> that translates, scales and applies alpha. This is what Gallery does
> for instance.
>
> On Thu, Aug 14, 2008 at 5:15 AM, Erik Calissendorff
>
>
>
> <[EMAIL PROTECTED]> wrote:
>
> > I'm trying to draw the children manually in my custom ViewGroup but
> > the code below only displays the left top most child. I have tried not
> > to clip the canvas and simply just call the child draw(Canvas c)
> > method directly but that results in that all children are drawn on top
> > of each other.
>
> > What I like to accomplish is to be able to manually move,scale and
> > modify the transparency of theViewat each draw call from the parent.
>
> > I hope that someone can inform me how to make this work.
>
> > Below is a my onLayout and dispatchDraw functions as they are now.
>
> > @Override
> > protected void onLayout(boolean changed, int l, int t, int r, int b)
> > {
> > for(int i=0;i<this.getChildCount();i++)
> > {
> > Viewchild = this.getChildAt(i);
> > Rectrect=this.mCellPositions[i];
> >
> > child.layout(rect.left,rect.top,rect.right,rect.bottom);
> > }
> > }
>
> > @Override
> > protected void dispatchDraw(Canvas canvas) {
> > for(int i=0;i<this.getChildCount();i++)
> > {
> > Viewview= this.getChildAt(i);
> > Rectcell=this.mCellPositions[i];
> > canvas.save();
> > if(canvas.clipRect(cell,Op.REPLACE))
> > {
> >
> > if(!canvas.quickReject(view.getLeft(),view.getTop(),
> >view.getRight(),view.getBottom(), EdgeType.BW))
> > {
> > view.draw(canvas);
> > }
> > }
> > canvas.restore();
> > }
> > }
>
> --
> Romain Guywww.curious-creature.org
--~--~---------~--~----~------------~-------~--~----~
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]
Announcing the new Android 0.9 SDK beta!
http://android-developers.blogspot.com/2008/08/announcing-beta-release-of-android-sdk.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---