One of the problems I'm having with this is the rotated element gets clipped by the area in which it's originally drawn. Should I be calling invalidate somewhere?
On Wed, Oct 5, 2011 at 3:07 PM, twiggle <[email protected]> wrote: > I'm struggling trying to rotate by 180 degrees, a ViewGroup which contains > buttons and checkboxes. Does anyone have a reliable way of doing this? > I've been able to get what's rendered to the screen to be rotated, but the > touch event coordinates seem off and the dynamic widget elements (the > highlighting and check marks for example, don't seem to be rotated-- at last > not correctly). > > Is there a setting that I'm missing in the ViewGroup? Any other ideas? > > I had to modify the originally posted code as follows: > > public FlipLayout(Context context) { > super(context); > //mForward.setScale(1, 1); > //mForward.setRotate(0); > //mForward.invert(mReverse); > } > > @Override > protected void dispatchDraw(Canvas canvas) { //dispatchDraw > /* > canvas.save(); > canvas.setMatrix(mForward); > super.dispatchDraw(canvas); > canvas.restore(); > */ > > canvas.rotate(180, getWidth()/2, getHeight()/2); > > mForward = canvas.getMatrix(); > //mForward.invert(mReverse); > canvas.save(); > canvas.setMatrix(mForward); //This is the matrix we need to use > for proper positioning of touch events > super.dispatchDraw(canvas); > canvas.restore(); > > > } > > @Override > public boolean dispatchTouchEvent(MotionEvent event) { > final float[] temp = mTemp; > temp[0] = event.getX(); > temp[1] = event.getY(); > > //mReverse.mapPoints(temp); > > //event.setLocation(temp[0], temp[1]); > event.setLocation(getWidth()-temp[0], getHeight()-temp[1]); > return super.dispatchTouchEvent(event); > } > } > > > -- > 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 -- 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

