of an onClick from one of the buttons also in the view for that item.
The ImageView that is rotated is from the array that the list view uses.
On 02/07/2011 2:42 PM, Mark Murphy wrote:
> You are not calling rotateThumbnail() in getView().
>
> On Sat, Jul 2, 2011 at 9:39 AM, Simon Platten
> <simonaplatten@googlemail.com> wrote:
>> I believe thats exactly what I'm doing:
>>
>> public View getView(int position,
>> View convertView,
>> ViewGroup parent) {
>> View v = convertView;
>>
>> if (v == null) {
>> LayoutInflater vi =
>> (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
>> v = vi.inflate(R.layout.lvimages, null);
>> }
>> imgFile ii = m_aryImages.get( position );
>>
>> if ( ii != null ) {
>> Bitmap bmpData = BitmapFactory.decodeFile(ii.getFilename());
>> int intScaledWidth = clsWallpaper.m_intScrWidth / 2;
>> float fltAspectRatio = (float)bmpData.getHeight() /
>> (float)bmpData.getWidth();
>> int intScaledHeight = (int)((float)intScaledWidth *
>> fltAspectRatio);
>> Bitmap bmpResized = Bitmap.createScaledBitmap( bmpData,
>>
>> intScaledWidth,
>>
>> intScaledHeight,
>> false );
>> Drawable drwThumbnail = new BitmapDrawable(bmpResized);
>> ImageView ivThumbnail =
>> (ImageView)v.findViewById(R.id.ivthumbNail);
>> ivThumbnail.setBackgroundDrawable(drwThumbnail);
>> ii.setThumbnail(ivThumbnail);
>> // Get the image file name
>> TextView tvFilename =
>> (TextView)v.findViewById(R.id.tvFilename);
>> // Remove the path from the file name
>> String strFile = ii.getFilename();
>> int intIdx = strFile.lastIndexOf(File.separator);
>>
>> if ( intIdx>= 0 ) {
>> strFile = strFile.substring( intIdx + 1 );
>> }
>> tvFilename.setText(strFile);
>> // Rotation images
>> ii.setIndex( position );
>> ii.setupCCW(v.findViewById(R.id.btnCCW));
>> ii.setupCW(v.findViewById(R.id.btnCW));
>> }
>> return v;
>> }
>>
>> The methods setupCCW and setupCW add listeners to the buttons:
>>
>> public void setupCCW(View v) {
>> m_ibtnCCW = (ImageButton)v;
>>
>> m_ibtnCCW.setOnClickListener(new OnClickListener() {
>> @Override
>> public void onClick(View v) {
>> try{
>> rotateThumbnail(ROTATE_CCW);
>> } catch( Exception ex ) {
>> Log.e( TAG, "setOnClickListener", ex );
>> }
>> }
>> });
>> }
>>
>> Here is the code for rotateThumbnail():
>>
>> public void rotateThumbnail(int intRotation) {
>> try{
>> if ( intRotation == ROTATE_CW ) {
>> m_intAngle = 90;
>> } else if ( intRotation == ROTATE_CCW ) {
>> m_intAngle = -90;
>> }
>> if ( m_intAngle != 0 ) {
>> // Rotating Bitmap
>> Drawable drwImg = m_ivThumbnail.getBackground();
>> Bitmap bmpThumbnail = ((BitmapDrawable)drwImg).getBitmap();
>> Matrix mtx = new Matrix();
>> mtx.setRotate(m_intAngle,
>> bmpThumbnail.getWidth() / 2,
>> bmpThumbnail.getHeight() / 2);
>> bmpThumbnail = Bitmap.createBitmap(bmpThumbnail,
>> 0, 0,
>> bmpThumbnail.getWidth(),
>> bmpThumbnail.getHeight(),
>> mtx, true);
>> Drawable drwRotated = new BitmapDrawable(bmpThumbnail);
>> m_ivThumbnail.setBackgroundDrawable(drwRotated);
>>
>> if ( m_intAngle< 0&& m_intTotalAngle == 0 ) {
>> m_intTotalAngle = 360;
>> }
>> m_intTotalAngle = (m_intTotalAngle + m_intAngle) % 360;
>> }
>> } catch( Exception ex ) {
>> Log.e( TAG, "rotateThumbnail", ex );
>> }
>> }
>>
>>
>> As I said in my first post when the buttons are pressed the image is
>> rotated, but it reverts back to its original state when it goes out of view.
>>
>>
>> On 02/07/2011 2:20 PM, Mark Murphy wrote:
>>> On Sat, Jul 2, 2011 at 9:07 AM, Simon Platten
>>> <simonaplatten@googlemail.com> wrote:
>>>> I have a listview which has an ImageView in each item and a couple of
>>>> buttons. The buttons allow the user to rotate the image clockwise and
>>>> counter clockwise by 90 degrees on each press. This works find and the
>>>> ImageView is rotated, however if I scroll the item off view, when I
>>>> scroll
>>>> it back into view the orginal image is restored without any rotation
>>>> applied, is there a notification that I can get when the item comes into
>>>> view so I can correct the image
>>> You are already overriding getView(), presumably. That is where you
>>> apply your rotation.
>>>
>>>> or....can I modifiy the original ImageView
>>>> in the list view directly?
>>> You are already overriding getView(), presumably. That is where you
>>> are modifying "the original ImageView", so that is where you apply
>>> your rotation.
>>>
>> --
>> 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+unsubscribe@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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
No comments:
Post a Comment