Mega Code Archive

 
Categories / Android / 2D Graphics
 

Rotate around Center Point

package app.test; import java.io.FileNotFoundException; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.Display; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class Test extends Activity implements OnClickListener {   ImageView chosenImageView;   Button choosePicture;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     chosenImageView = (ImageView) this.findViewById(R.id.ChosenImageView);     choosePicture = (Button) this.findViewById(R.id.ChoosePictureButton);     choosePicture.setOnClickListener(this);   }   public void onClick(View v) {     Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);     startActivityForResult(choosePictureIntent, 0);   }   protected void onActivityResult(int requestCode, int resultCode,       Intent intent) {     super.onActivityResult(requestCode, resultCode, intent);     if (resultCode == RESULT_OK) {       Uri imageFileUri = intent.getData();       Display currentDisplay = getWindowManager().getDefaultDisplay();       int dw = currentDisplay.getWidth();       int dh = currentDisplay.getHeight() / 2 - 100;       try {         BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();         bmpFactoryOptions.inJustDecodeBounds = true;         Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(                 imageFileUri), null, bmpFactoryOptions);         bmpFactoryOptions.inSampleSize = 2;         bmpFactoryOptions.inJustDecodeBounds = false;         bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(                 imageFileUri), null, bmpFactoryOptions);         Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp             .getHeight(), bmp.getConfig());         Canvas canvas = new Canvas(alteredBitmap);         Paint paint = new Paint();         Matrix matrix = new Matrix();         // Rotate around Center Point         matrix.setRotate(15,bmp.getWidth()/2,bmp.getHeight()/2);         canvas.drawBitmap(bmp, matrix, paint);         ImageView alteredImageView = (ImageView) this.findViewById(R.id.AlteredImageView);         alteredImageView.setImageBitmap(alteredBitmap);         chosenImageView.setImageBitmap(bmp);       } catch (Exception e) {         Log.v("ERROR", e.toString());       }     }   } } //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"     > <Button     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="Choose Picture" android:id="@+id/ChoosePictureButton"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ChosenImageView"></ImageView> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/AlteredImageView"></ImageView> </LinearLayout>