01/10/2018, 09:39

Không hiểu code về class ImageView trong android

mình kiếm được một code về class ImageView có thể pan và zoom ảnh nhưng mình không hiểu method fixTrans() và getFixTrans dùng để làm gì. Ai giải thích giúp mình với

  void fixTrans() {  

    matrix.getValues(m);  

    float transX = m[Matrix.MTRANS_X];  

    float transY = m[Matrix.MTRANS_Y];  

    float fixTransX = getFixTrans(transX, viewWidth, origWidth * saveScale);  

    float fixTransY = getFixTrans(transY, viewHeight, origHeight * saveScale);  

    if (fixTransX != 0 || fixTransY != 0)  

        matrix.postTranslate(fixTransX, fixTransY);  

}  



float getFixTrans(float trans, float viewSize, float contentSize) {  

    float minTrans, maxTrans;  

    if (contentSize <= viewSize) {  

        minTrans = 0;  

        maxTrans = viewSize - contentSize;  

    } else {  

        minTrans = viewSize - contentSize;  

        maxTrans = 0;  

    }  

    if (trans < minTrans)  

        return -trans + minTrans;  

    if (trans > maxTrans)  

        return -trans + maxTrans;  

    return 0;  

}
Sky Cloud viết 11:43 ngày 01/10/2018

Theo mình thì đây là quá trình hiển thị khi bạn zoom out or in 1 bức ảnh , bạn sẽ thấy bức ảnh sẽ đi từ nhỏ lên to hoặc ngược lại , vậy làm sao giữ được tỉ lên ngang dọc của bức ảnh vẫn đúng trong quá trình này, thì người ta đưa vào biến fixtransX và Y , để giữ cho tỉ lệ bức ảnh ko bị sai lệch , dựa vào tỉ lệ ban đầu .
Hãy thử tưởng tượng ko có 2 biến fixtransX và Y , vậy khi bạn dùng 2 ngón tay zoom 1 bức ảnh , nó có thể to ra chiều ngang , trong khi chiều dọc ko đổi, hoặc đổi , với 1 tỉ lệ ko cân xứng .

Bài liên quan
0