Try setting a scaleType property on the ImageView, perhaps you can get consistent results that way.
2011/7/23 Simon Platten <simonaplat...@googlemail.com>: > Is this a bug or is there a property that needs setting ? > > On Fri, Jul 22, 2011 at 7:27 AM, Simon Platten > <simonaplat...@googlemail.com> wrote: >> >> Has anyone else encountered this problem? >> >> On Thu, Jul 21, 2011 at 7:54 PM, Simon Platten >> <simonaplat...@googlemail.com> wrote: >>> >>> I have a listview with each item defined as: >>> >>> <?xml version="1.0" encoding="utf-8"?> >>> <RelativeLayout >>> xmlns:android="http://schemas.android.com/apk/res/android" >>> android:layout_width="fill_parent" >>> >>> android:layout_height="?android:attr/listPreferredItemHeight" >>> android:padding="10dp"> >>> <LinearLayout android:id="@+id/llHeader" >>> android:background="@color/blue" >>> android:orientation="vertical" >>> android:layout_alignParentTop="true" >>> android:layout_width="fill_parent" >>> android:layout_height="fill_parent" > >>> <CheckBox android:id="@+id/chkUse" >>> android:text="File-name" >>> android:textColor="@color/yellow" >>> android:textStyle="bold" >>> android:layout_width="fill_parent" >>> android:layout_height="wrap_content" >>> android:layout_gravity="left" /> >>> </LinearLayout> >>> <ImageView android:id="@+id/ivthumbNail" >>> android:src="@drawable/placeholder" >>> android:layout_centerHorizontal="true" >>> android:layout_below="@+id/llHeader" >>> android:layout_width="fill_parent" >>> android:layout_height="fill_parent" /> >>> <ImageButton android:id="@+id/btnCCW" >>> android:src="@drawable/ccw_rotate_btn" >>> android:layout_alignLeft="@+id/llHeader" >>> android:layout_below="@+id/llHeader" >>> android:layout_width="48dip" >>> android:layout_height="48dip" /> >>> <ImageButton android:id="@+id/btnCW" >>> android:src="@drawable/cw_rotate_btn" >>> android:layout_alignRight="@+id/llHeader" >>> android:layout_below="@+id/llHeader" >>> android:layout_width="48dip" >>> android:layout_height="48dip" /> >>> </RelativeLayout> >>> >>> >>> This gives a title / checkbox, under this is an imageview with a button >>> either side of it. With the buttons I can rotate the image clockwise or >>> counter clockwise by 90 degrees, the routine that performs the rotation and >>> scaling of the images: >>> >>> public Bitmap scaleAndRotateImage(boolean blnShow) { >>> try{ >>> BitmapFactory.Options bfo = new BitmapFactory.Options(); >>> bfo.inSampleSize = 4; >>> Bitmap bmpData = BitmapFactory.decodeFile(m_strFilename, >>> bfo); >>> >>> if ( m_intOriginalWidth == 0 && m_intOriginalHeight == 0 ) { >>> m_intOriginalWidth = bmpData.getWidth(); >>> m_intOriginalHeight = bmpData.getHeight(); >>> int intScaledWidth = clsWallpaper.m_intScrWidth; >>> float fltAspectRatio = (float)bmpData.getHeight() / >>> (float)bmpData.getWidth(); >>> int intScaledHeight = (int)((float)intScaledWidth * >>> fltAspectRatio); >>> m_fltScaleWidth = ((float)intScaledWidth) / >>> ((float)m_intOriginalWidth); >>> m_fltScaleHeight = ((float)intScaledHeight) / >>> ((float)m_intOriginalHeight); >>> } >>> // Apply the scale to the matrix >>> Matrix mtx = new Matrix(); >>> mtx.postScale(m_fltScaleWidth, m_fltScaleHeight); >>> // Apply the rotation angle to the matrix >>> mtx.postRotate(m_intTotalAngle); >>> // Get the scaled and maybe rotated version of the bitmap >>> Bitmap bmpScaled = Bitmap.createBitmap(bmpData, >>> 0, 0, >>> m_intOriginalWidth, >>> m_intOriginalHeight, >>> mtx, true); >>> if ( blnShow == true && bmpScaled != null ) { >>> m_drwThumbnail = new BitmapDrawable(bmpScaled); >>> Activity a = (Activity)m_ivThumbnail.getContext(); >>> a.runOnUiThread(updateThumbnail); >>> } >>> return bmpScaled; >>> } catch( Exception ex ) { >>> Log.e( TAG, "rotateThumbnail", ex ); >>> } >>> return null; >>> } >>> >>> The strange this is when the image is rotated the scaled version is >>> smaller than it is supposed to be, if I scroll the listview so the item goes >>> out of view then scroll it back into view the item comes back with the image >>> of the correct size. Is they're anything I can do about this? >>> -- >>> Regards, >>> Sy >>> >> >> >> >> -- >> Regards, >> Sy >> > > > > -- > Regards, > Sy > > -- > 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 -- 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