Ok so I have all the code in place to create a random degree of rotation 
between a start and finish... works great... i have a progress bar that i 
can pull and watch the image rotate on the screen, while i drag it... but 
when i click the button, it just sits there, and then finally shows the 
image at its last state... i want to see the image rotating just as i do 
when i drag my finger on it? what am i doing wrong! it has to be something 
simple. please help... I have tried invalidate and postinvalidate nothing...
 
main.xml:
 
 
<?xml version=*"1.0"* encoding=*"utf-8"*?>

<LinearLayout xmlns:android=*"http://schemas.android.com/apk/res/android";
* 

android:orientation=*"vertical"
* 

android:layout_width=*"fill_parent"
* 

android:layout_height=*"fill_parent"
* 

>

<TextView 

android:layout_width=*"fill_parent"
* 

android:layout_height=*"wrap_content"
* 

android:text=*"@string/hello"
* 

/>

<Button android:text=*"Button"* android:id=*"@+id/button1"* 
android:layout_width=*"wrap_content"* android:layout_height=*"wrap_content"*
></Button>

<Spinner

android:id=*"@+id/scale"
* 

android:layout_width=*"fill_parent"
* 

android:layout_height=*"wrap_content"
* 

/>

<SeekBar

android:id=*"@+id/rotate"
* 

android:layout_width=*"fill_parent"
* 

android:layout_height=*"wrap_content"
* 

android:layout_margin=*"5px"
* 

android:max=*"360"
* 

android:progress=*"0"
* 

/>

<ImageView 

android:id=*"@+id/imageview"
* 

android:layout_gravity=*"center"
* 

android:layout_width=*"fill_parent"
* 

android:layout_height=*"fill_parent"
* 

android:scaleType=*"center"
* 

/>

</LinearLayout>

Main file:

package com.exercise.AndroidBitmap;

import java.util.Random;

import android.app.Activity;
import android.app.AlertDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.Spinner;

public class AndroidBitmap extends Activity {
 
 //private final String imageInSD = "/sdcard/er.PNG";
 
 ImageView myImageView;
 Spinner spinnerScale;
 SeekBar seekbarRotate;
 
 private static final String[] strScale
  = {"0.2x", "0.5x", "1.0x", "2.0x", "5.0x"};
 private static final Float[] floatScale
  = {0.2F, 0.5F, 1F, 2F, 5F};
 private final int defaultSpinnerScaleSelection = 2;
 
 private ArrayAdapter<String> adapterScale;
 
 private float curScale = 1F;
 private float curRotate = 0F;
 
 //spinning variables
 private static int ROTATETO;
 private int START = 720;
 private int END = 1440;
 Random random = new Random();
 
 Bitmap bitmap;
 int bmpWidth, bmpHeight;
 
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       final Button button = (Button) findViewById(R.id.button1);         
       myImageView = (ImageView)findViewById(R.id.imageview);
      
       spinnerScale = (Spinner)findViewById(R.id.scale);
       seekbarRotate = (SeekBar)findViewById(R.id.rotate);
      
       adapterScale = new ArrayAdapter<String>(this,
               android.R.layout.simple_spinner_item, strScale);
       
adapterScale.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       spinnerScale.setAdapter(adapterScale);
       spinnerScale.setSelection(defaultSpinnerScaleSelection);
       curScale = floatScale[defaultSpinnerScaleSelection];
      
      // bitmap = BitmapFactory.decodeFile(imageInSD);
       bitmap = BitmapFactory.decodeResource(getResources(), 
R.drawable.icon);
       bmpWidth = bitmap.getWidth();
       bmpHeight = bitmap.getHeight();
      
       drawMatrix();
      
       
spinnerScale.setOnItemSelectedListener(spinnerScaleOnItemSelectedListener);
       
seekbarRotate.setOnSeekBarChangeListener(seekbarRotateSeekBarChangeListener);
      
       button.setOnClickListener(new View.OnClickListener() {             
        public void onClick(View v) 
        {                 
         //AlertDialog.Builder builder = new 
AlertDialog.Builder(AndroidBitmap.this);
         //builder.setMessage("hi");
         ///AlertDialog alert = builder.create();
         //alert.show();
         
          RandomInteger(START, END, random);
    Log.d("up", Integer.toString(ROTATETO) );
    for (int i = 0; i < ROTATETO; i++) 
    {
     curRotate = (float)i;
        drawMatrix();
        //myImageView.postInvalidate();
    }
        }         
        });
        
       }
  
   private void drawMatrix(){
    
    Matrix matrix = new Matrix();
       matrix.postScale(curScale, curScale);
       matrix.postRotate(curRotate);
       
       Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, 
bmpHeight, matrix, true);
       myImageView.setImageBitmap(resizedBitmap);
       myImageView.postInvalidate();
    
   }
  
   private SeekBar.OnSeekBarChangeListener 
seekbarRotateSeekBarChangeListener
    = new SeekBar.OnSeekBarChangeListener(){

   @Override
   public void onProgressChanged(SeekBar seekBar, int progress,
     boolean fromUser) {
    // TODO Auto-generated method stub
    curRotate = (float)progress;
    drawMatrix();
   }

   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    
   }

   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
    
   }};
  
   private Spinner.OnItemSelectedListener spinnerScaleOnItemSelectedListener
    = new Spinner.OnItemSelectedListener(){

   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    // TODO Auto-generated method stub
    curScale = floatScale[arg2];
    drawMatrix();
   }

   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    spinnerScale.setSelection(defaultSpinnerScaleSelection);
    curScale = floatScale[defaultSpinnerScaleSelection];
   }};
   
   private static void RandomInteger(int aStart, int aEnd, Random aRandom){
     if ( aStart > aEnd )
     {
       //throw new IllegalArgumentException("Start cannot exceed End.");
     }
     //get the range, casting to long to avoid overflow problems
     long range = (long)aEnd - (long)aStart + 1;
     // compute a fraction of the range, 0 <= frac < range
     long fraction = (long)(range * aRandom.nextDouble());
     ROTATETO =  (int)(fraction + aStart);    
   }
}

 

-- 
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

Reply via email to