2016-08-17 4 views
0

Я пытаюсь повернуть ImageView вокруг его центра, используя класс Matrix.Поворот ImageView с использованием класса Matrix в Android

Это мой ImageView XML код

<ImageView 
    android:id="@+id/carBack" 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:src="@drawable/automodel"/> 

и это метод, я нашел на SO, чтобы повернуть ImageView

Matrix matrixX = new Matrix(); 
mCarBack.setScaleType(ImageView.ScaleType.MATRIX); //required 
float pivotXBack = mCarBack.getDrawable().getBounds().width()/2; 
float pivotYBack = mCarBack.getDrawable().getBounds().height()/2; 
matrixX.postRotate((float) byteRoll, pivotXBack, pivotYBack); 
mCarBack.setImageMatrix(matrixX); 

Вращение работает правильно, но мой ImageView автоматически изменяется , Как я могу повернуть изображение, сохраняя тот же размер?

ответ

0

попробовать это:

try { 


//Get ImageView from layout xml file 
img = (ImageView) findViewById(R.id.imageView01); 

//Decode Image using Bitmap factory. 
//Bitmap bMapimg = BitmapFactory.decodeFile(selectedImagePath); 
Bitmap bMapimg = Bitmap.createBitmap(img.getDrawingCache()); 

//Create object of new Matrix. 
Matrix matrix = new Matrix(); 

//set image rotation value to 90 degrees in matrix. 
matrix.postRotate(90); 
matrix.postScale(0.5f, 0.5f); 

int newWidth = bMap.getWidth()/2; 
int newHeight = bMap.getHeight()/2; 

//Create bitmap with new values. 
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, newWidth, newHeight, matrix, true); 

//put rotated image in ImageView. 
img.setImageBitmap(bMapRotate); 

Context context = getApplicationContext(); 
CharSequence text = "Image Rotated" ; 
int durationtime = Toast.LENGTH_SHORT; 

Toast toasttext = Toast.makeText(context, text, duration); 

toast.show(); 

} catch (Exception e) {  
e.printStackTrace(); 
displayExceptionMessage(e.getMessage()); 
}