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;
}
Bài liên quan
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 .