2016-12-21 4 views
0

У меня есть требование с небольшой модификацией. Этот post сохраняет масштаб изменения ориентации и делает его центром. Я не хочу, чтобы изображение выравнивалось по центру. Я просто хочу, чтобы масштабирование поддерживалось. Как это можно достичь? Любая помощь будет высоко оценена.Сохранять изображение в увеличенном масштабе без центра aligining

ответ

0

Я достиг желаемого поведения после столь большого штурма мозга. Идея состоит в том, чтобы сохранить предыдущую матрицу и масштаб масштабирования изображения, а затем заполнить ранее сохраненную матрицу на изображении. Fetching предыдущих значений:

Matrix previousImageMatrix = photoView.getDisplayMatrix(); 
previousImageMatrix.getValues(previousValues); 
previousZoomLevel = prescription.getScale(); 

Теперь крепит photoView.getViewTreeObserver().addOnPreDrawListener(this); Заполняют выше матрицы, когда изображение масштабируются onPreDraw() метод как это:

@Override 
public boolean onPreDraw() 
{ 
    photoView.getViewTreeObserver().removeOnPreDrawListener(this); 
    Matrix theMatrix = photoView.getDisplayMatrix(); 
    Log.d("***", "onPreDraw: TransX = " + previousValues[2] + "TransY = " + previousValues[5]); 
    float[] matrixValues = new float[9]; 
    matrixValues[0] = previousZoomLevel; // 0 and 4 store the scaleX and scaleY 
    matrixValues[4] = previousZoomLevel; 
    if (previousZoomLevel == MIN_ZOOM_LEVEL) // Zoom Level starts from 1.0 to 16.0 
    { 
     matrixValues[2] = 0; //2 and 5 store store TransX and TransY 
     matrixValues[5] = 0; 
    } else 
    { 
     matrixValues[2] = previousValues[2]; 
     matrixValues[5] = previousValues[5]; 
    } 

    Log.d("***", "onPreDraw: NEW.. TransX = " + matrixValues[2] + "TransY = " + matrixValues[5]); 
    matrixValues[8] = 1.0f; 
    theMatrix.setValues(matrixValues); 
    prescription.setDisplayMatrix(theMatrix); 

    Matrix theImageViewMatrix = photoView.getDisplayMatrix(); 
    prescription.setImageMatrix(theImageViewMatrix); 
    return true; 
} 

Надеется, что это поможет кому-то.