Hi every one ,,m working with android project in which i want to rotate image along with touch to some fix pivot point ,,,i have completed all the things but i have facing one problem ,,,while m trying to rotate image the image bitmap is resize....i dont have any idea why it occur ....if somebody have den please give me idea to come over this problem....
my code is below .....
package com.demo.rotation;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
public class temp extends Activity{
ImageView img1;
float startX;
float startX2 ;
Bitmap source;
Bitmap bitmap1 = null;
double r;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img1 = (ImageView) findViewById(R.id.img1);
img1.setOnTouchListener(img1TouchListener);
bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.orsl_circle_transparent);
}
private OnTouchListener img1TouchListener = new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_MOVE:
Log.d("MOVE", "1");
if(source!=null)
r = Math.atan2(event.getX() - source.getWidth(),
(source.getHeight() / 2) - event.getY());
Log.i("startX" + event.getX(), "startY" + event.getY());
rotate(r,bitmap1, img1);
img1.setScaleType(ScaleType.CENTER);
break;
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
break;
default :
break;
}
return true;
}
};
private void rotate(double r , Bitmap currentBitmap ,ImageView imageView )
{
int rotation = (int) Math.toDegrees(r);
Matrix matrix = new Matrix();
matrix.setRotate(rotation, currentBitmap.getWidth()/2, currentBitmap.getHeight()/2);
source = Bitmap.createBitmap(currentBitmap, 0, 0, currentBitmap.getWidth(), currentBitmap.getHeight(), matrix, false);
imageView.setImageBitmap(source);
Log.i("HIGHT OF CURRENT BITMAP", ""+source.getHeight());
}
}