gpt4 book ai didi

android - 如何设置放大缩小和缩小默认缩放大小?

转载 作者:行者123 更新时间:2023-11-30 03:43:57 25 4
gpt4 key购买 nike

我遵循本教程 http://www.allappsdevelopers.com/TopicDetail.aspx?TopicID=c16ed3b4-b422-43ba-b595-ee8e21dd1854问题是当我捕获图像时默认显示尺寸太大但所有放大缩小我如何将默认尺寸设置为正常图像尺寸?

public boolean onTouch(View v, MotionEvent event) {

ImageView view = (ImageView) v;

view.setScaleType(ImageView.ScaleType.MATRIX);

float scale;



// Dump touch event to log

dumpEvent(event);



// Handle touch events here...

switch (event.getAction() & MotionEvent.ACTION_MASK) {



case MotionEvent.ACTION_DOWN: //first finger down only

savedMatrix.set(matrix);

start.set(event.getX(), event.getY());

Log.d(TAG, "mode=DRAG" );

mode = DRAG;

break;

case MotionEvent.ACTION_UP: //first finger lifted

case MotionEvent.ACTION_POINTER_UP: //second finger lifted

mode = NONE;

Log.d(TAG, "mode=NONE" );

break;

case MotionEvent.ACTION_POINTER_DOWN: //second finger down

oldDist = spacing(event);

Log.d(TAG, "oldDist=" + oldDist);

if (oldDist > 5f) {

savedMatrix.set(matrix);

midPoint(mid, event);

mode = ZOOM;

Log.d(TAG, "mode=ZOOM" );

}

break;



case MotionEvent.ACTION_MOVE:

if (mode == DRAG) { //movement of first finger

matrix.set(savedMatrix);

if (view.getLeft() >= -392){

matrix.postTranslate(event.getX() - start.x, event.getY() - start.y);

}
}

else if (mode == ZOOM) { //pinch zooming

float newDist = spacing(event);

Log.d(TAG, "newDist=" + newDist);

if (newDist > 5f) {

matrix.set(savedMatrix);

scale = newDist / oldDist; /*thinking i need to play around
with this value to limit it*/

matrix.postScale(scale, scale, mid.x, mid.y);

}

}

break;

}



// Perform the transformation

view.setImageMatrix(matrix);



return true; // indicate event was handled

}



private float spacing(MotionEvent event) {

float x = event.getX(0) - event.getX(1);

float y = event.getY(0) - event.getY(1);

return FloatMath.sqrt(x * x + y * y);

}



private void midPoint(PointF point, MotionEvent event) {

float x = event.getX(0) + event.getX(1);

float y = event.getY(0) + event.getY(1);

point.set(x / 2, y / 2);

}



/** Show an event in the LogCat view, for debugging */

private void dumpEvent(MotionEvent event) {

String names[] = { "DOWN" , "UP" , "MOVE" , "CANCEL" , "OUTSIDE" ,

"POINTER_DOWN" , "POINTER_UP" , "7?" , "8?" , "9?" };

StringBuilder sb = new StringBuilder();

int action = event.getAction();

int actionCode = action & MotionEvent.ACTION_MASK;

sb.append("event ACTION_" ).append(names[actionCode]);

if (actionCode == MotionEvent.ACTION_POINTER_DOWN

|| actionCode == MotionEvent.ACTION_POINTER_UP) {

sb.append("(pid " ).append(

action >> MotionEvent.ACTION_POINTER_ID_SHIFT);

sb.append(")" );

}

sb.append("[" );

for (int i = 0; i < event.getPointerCount(); i++) {

sb.append("#" ).append(i);

sb.append("(pid " ).append(event.getPointerId(i));

sb.append(")=" ).append((int) event.getX(i));

sb.append("," ).append((int) event.getY(i));

if (i + 1 < event.getPointerCount())

sb.append(";" );

}

sb.append("]" );

Log.d(TAG, sb.toString());

}

最佳答案

float initialZoomLevel = 0.5f;
matrix.setScale(initialZoomLevel, initialZoomLevel);
view.setImageMatrix(matrix);

将其放入 ImageView 的构造函数/初始化方法中。这将导致图像立即以 1/2 大小显示。对图像的任何进一步修改都应该在同一个矩阵上完成

public boolean onTouch(View v, MotionEvent event) {
matrix = view.getImageMatrix()
//.. now do zooming, etc on this matrix
}

这样,图像的“默认”大小设置为原始大小的一半。希望这对您有所帮助!

关于android - 如何设置放大缩小和缩小默认缩放大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15293503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com