Look at the setRotationX()  setRotationY()  and  setScaleX()  setScaleY()
They sure make the work much easier


On 12/16/2011 08:59 AM, chowdary nani wrote:

Hi All,
I need help on Image zoom and Image rotate in android with in the same screen
I am developing using below code.

public class ImageRotateActivity extends Activity {
/** Called when the activity is first created. */
private ImageView img;
private Button rotate;
private Button zoom;
float degrees =0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

zoom=(Button)findViewById(R.id.button2);
zoom.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub

setContentView(new Zoom(this));
}
});
rotate = (Button) findViewById(R.id.button1);
rotate.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.main);
make(degrees);
}
});

}


    public void make(float x){
        android.util.Log.i("INSIDE MAKE", "inside make");
        LinearLayout linLayout = new LinearLayout(this);
        // load the origial BitMap (500 x 500 px)
        Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
               R.drawable.honeycomb);
        int width = bitmapOrg.getWidth();
        int height = bitmapOrg.getHeight();
        int newWidth = 200;
        int newHeight = 200;
        // calculate the scale - in this case = 0.4f
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // createa matrix for the manipulation
        Matrix matrix = new Matrix();
        // resize the bit map
        matrix.postScale(scaleWidth, scaleHeight);
        // rotate the Bitmap
        matrix.postRotate(x);
        // recreate the new Bitmap
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
                          width, height, matrix, true);
        // make a Drawable from Bitmap to allow to set the BitMap
        // to the ImageView, ImageButton or what ever
        BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
        ImageView imageView = new ImageView(this);
        // set the Drawable on the ImageView
        imageView.setImageDrawable(bmd);
        // center the Image
        imageView.setScaleType(ScaleType.CENTER);
        // add ImageView to the Layout
        linLayout.addView(imageView,
          new LinearLayout.LayoutParams(
                      LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT
                )
        );
        // set LinearLayout as ContentView
        setContentView(linLayout);
        android.util.Log.i("GOING OUT MAKE", "going out make");
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
         if(keyCode==KeyEvent.KEYCODE_DPAD_UP)// rotate clockwise
             // zoomControler+=10;
                {
                 degrees=degrees+10;
                make(degrees);
                 //make(10);
android.util.Log.i("ONE","rotating clockwise by "+String.valueOf(degrees)+" degrees"); android.util.Log.i("DEGREES","current value "+String.valueOf(degrees)+" degrees");
                }
         if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN) // rotate anti-clockwise
         {
                 degrees=degrees-10;
                 make(degrees);
                 //make(10);
android.util.Log.i("TWO","rotating anti-clockwise by "+String.valueOf(degrees)+" degrees"); android.util.Log.i("DEGREES","current value "+String.valueOf(degrees)+" degrees");
         }
        // invalidate();
         return true;
    }
}
public class Zoom extends View {
private Drawable image;
private ImageView img;
float degrees = 0;

private int zoomControler = 20;

public Zoom(Context context) {
super(context);
image = context.getResources().getDrawable(R.drawable.honeycomb);
setFocusable(true);

}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// here u can control the width and height of the images........ this
// line is very important
image.setBounds((getWidth() / 2) - zoomControler, (getHeight() / 2)
- zoomControler, (getWidth() / 2) + zoomControler,
(getHeight() / 2) + zoomControler);
image.draw(canvas);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT)// zoom in
zoomControler += 10;
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) // zoom out
zoomControler -= 10;
if (zoomControler < 10)
zoomControler = 10;

invalidate();
return true;
}
}




Here any one i.e, either zoom or image rotation is getting well but when trying to use both getting error

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

Reply via email to