Re: [android-developers] Re: Listview oddity with imageview
I wish I could say it helped but it hasn't. On Sat, Jul 23, 2011 at 1:27 AM, Abhishek Akhani abhishek.akh...@gmail.comwrote: invalidate the view after rotating... hope this may help... -- 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 -- 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
Re: [android-developers] Re: Listview oddity with imageview
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
Re: [android-developers] Re: Listview oddity with imageview
I've tried all the scale type options, no effect, except that it fixes the width and the height doesn't scale correctly. It works exactly as I would expect in the emulator, when on my phone it shrinks after rotation, but if I scroll out of view then back into view its ok...very strange. On 22/07/2011 9:45 PM, Kostya Vasilyev wrote: Try setting a scaleType property on the ImageView, perhaps you can get consistent results that way. 2011/7/23 Simon Plattensimonaplat...@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
Re: [android-developers] Re: Listview oddity with imageview
Your second paragraph below sounds like a view recycling issue. The emulator and real devices may have some differences there. -- Kostya 23.07.2011 0:54, Simon Platten пишет: I've tried all the scale type options, no effect, except that it fixes the width and the height doesn't scale correctly. It works exactly as I would expect in the emulator, when on my phone it shrinks after rotation, but if I scroll out of view then back into view its ok...very strange. -- Kostya Vasilyev -- 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