Java 在Android中使用MikeOrtiz TouchImageView无法有效执行ZoomIn和Zoomout?
我是安卓系统的新手。这是SO中已经提出的问题 现在此问题已解决。这是文件的最新版本,但每次我都会收到此错误Java 在Android中使用MikeOrtiz TouchImageView无法有效执行ZoomIn和Zoomout?,java,android,zooming,touchimageview,Java,Android,Zooming,Touchimageview,我是安卓系统的新手。这是SO中已经提出的问题 现在此问题已解决。这是文件的最新版本,但每次我都会收到此错误 02-03 21:21:08.030: E/AndroidRuntime(17110): java.lang.UnsupportedOperationException: Scale must be greater than minScale and less than maxScale 每当我尝试用手指触摸图像时,它会抛出一个异常,我的应用程序就会崩溃。尝试连续单击“缩放”和“缩放”
02-03 21:21:08.030: E/AndroidRuntime(17110): java.lang.UnsupportedOperationException: Scale must be greater than minScale and less than maxScale
每当我尝试用手指触摸图像时,它会抛出一个异常,我的应用程序就会崩溃。尝试连续单击“缩放”和“缩放”按钮时也是如此。我希望此图像的放大和缩小行为与webview一样。我不想对此功能设置任何限制。我如何解决此触摸和缩放错误iamgeScale设置。请帮助我
MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newxml);
ImageView zoonIn = (ImageView)findViewById(R.id.btn_zoomIn1);
ImageView zoonOut = (ImageView)findViewById(R.id.btn_zoomout1);
final TouchImageView1 touch = (TouchImageView1)findViewById(R.id.imagezoom);
Bitmap bImage = BitmapFactory.decodeResource(this.getResources(), R.drawable.app_icon);
touch.setImageBitmap(bImage);
touch.setMinZoom(0.5f);
touch.setMaxZoom(5f);
zoonIn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float scale = touch.getCurrentZoom();
PointF centerPoint = touch.getCenterOfZoomedImage();
Number zoomedValue =scale*1.25;
float value = zoomedValue.floatValue();
touch.setZoom(value,centerPoint.x,centerPoint.y);
}
});
zoonOut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float scale = touch.getCurrentZoom();
PointF centerPoint = touch.getCenterOfZoomedImage();
Number zoomedValue =scale/1.25;
float value = zoomedValue.floatValue();
touch.setZoom(value,centerPoint.x,centerPoint.y);
}
});
}
}
Logcat错误:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newxml);
ImageView zoonIn = (ImageView)findViewById(R.id.btn_zoomIn1);
ImageView zoonOut = (ImageView)findViewById(R.id.btn_zoomout1);
final TouchImageView1 touch = (TouchImageView1)findViewById(R.id.imagezoom);
Bitmap bImage = BitmapFactory.decodeResource(this.getResources(), R.drawable.app_icon);
touch.setImageBitmap(bImage);
touch.setMinZoom(0.5f);
touch.setMaxZoom(5f);
zoonIn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float scale = touch.getCurrentZoom();
PointF centerPoint = touch.getCenterOfZoomedImage();
Number zoomedValue =scale*1.25;
float value = zoomedValue.floatValue();
touch.setZoom(value,centerPoint.x,centerPoint.y);
}
});
zoonOut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float scale = touch.getCurrentZoom();
PointF centerPoint = touch.getCenterOfZoomedImage();
Number zoomedValue =scale/1.25;
float value = zoomedValue.floatValue();
touch.setZoom(value,centerPoint.x,centerPoint.y);
}
});
}
}
02-03 21:21:08.030:E/AndroidRuntime(17110):致命异常:主
02-03 21:21:08.030:E/AndroidRuntime(17110):java.lang.UnsupportedOperationException:比例必须大于minScale且小于maxScale
02-03 21:21:08.030:E/AndroidRuntime(17110):在com.example.imagetouchview.TouchImageView1.setZoom(TouchImageView1.java:369)
02-03 21:21:08.030:E/AndroidRuntime(17110):位于com.example.imagetouchview.TouchImageView1.setZoom(TouchImageView1.java:354)
02-03 21:21:08.030:E/AndroidRuntime(17110):位于com.example.imagetouchview.MainActivity$2.onClick(MainActivity.java:71)
02-03 21:21:08.030:E/AndroidRuntime(17110):在android.view.view.performClick(view.java:4211)上
02-03 21:21:08.030:E/AndroidRuntime(17110):在android.view.view$PerformClick.run(view.java:17267)
02-03 21:21:08.030:E/AndroidRuntime(17110):在android.os.Handler.handleCallback(Handler.java:615)上
02-03 21:21:08.030:E/AndroidRuntime(17110):在android.os.Handler.dispatchMessage(Handler.java:92)上
02-03 21:21:08.030:E/AndroidRuntime(17110):在android.os.Looper.loop(Looper.java:137)
02-03 21:21:08.030:E/AndroidRuntime(17110):位于android.app.ActivityThread.main(ActivityThread.java:4898)
02-03 21:21:08.030:E/AndroidRuntime(17110):位于java.lang.reflect.Method.Invokenactive(本机方法)
02-03 21:21:08.030:E/AndroidRuntime(17110):位于java.lang.reflect.Method.invoke(Method.java:511)
02-03 21:21:08.030:E/AndroidRuntime(17110):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
02-03 21:21:08.030:E/AndroidRuntime(17110):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
02-03 21:21:08.030:E/AndroidRuntime(17110):在dalvik.system.NativeStart.main(本机方法)
02-03 21:21:19.400:I/进程(17110):发送信号。PID:17110信号:9
现在很明显:您的缩放值大于您设置的最大缩放值。
5.9604645.
尝试将maxZoom设置为6f。在设置最小/最大缩放值之前,您需要正确地考虑您的用法。 还需要考虑不同的行为及其对应的值: 浮动比例=touch.getCurrentZoom()
PointF centerPoint=touch.getCenterOfZoomedImage() 我建议您仔细检查哪些内容符合您的要求,并查看:
我已经使用了它,它的库类也非常简单和透明。在您的活动中,第369行和第364行是什么,还可以调试和检查在onclick侦听器中获取的值,或者只发布值的日志。另外,如果符合您的要求,请尝试使用public void setZoom(float scale,float focusX,float focusY,ScaleType ScaleType){if(scale