Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ViewAnimator(如ScaleAnimation)时,如何在ImageView中设置全分辨率图像的动画?_Java_Android_Imageview - Fatal编程技术网

Java 使用ViewAnimator(如ScaleAnimation)时,如何在ImageView中设置全分辨率图像的动画?

Java 使用ViewAnimator(如ScaleAnimation)时,如何在ImageView中设置全分辨率图像的动画?,java,android,imageview,Java,Android,Imageview,目前,我正在将图像导入ImageView,并以全设备宽度和wrapContent高度显示它。当我点击图像时,我使用缩放图像放大它,一切都很好。问题是我正在缩放缓存的位图,该位图被缩小以适应设备宽度 例如,当一个1080p图像添加到我的720p设备上时,肯定是因为我单击放大时,设备正在放大我的1080p图像的缓存720p位图版本。我特意下载了一个更高分辨率的图像,这样它就可以进行缩放,但我不知道如何强制它使用原始图像而不是缓存版本 这里是我处理缩放的地方: private void zoomIn(

目前,我正在将图像导入ImageView,并以全设备宽度和wrapContent高度显示它。当我点击图像时,我使用缩放图像放大它,一切都很好。问题是我正在缩放缓存的位图,该位图被缩小以适应设备宽度

例如,当一个1080p图像添加到我的720p设备上时,肯定是因为我单击放大时,设备正在放大我的1080p图像的缓存720p位图版本。我特意下载了一个更高分辨率的图像,这样它就可以进行缩放,但我不知道如何强制它使用原始图像而不是缓存版本

这里是我处理缩放的地方:

private void zoomIn(View v, int time){
    // initialize animations
    Animation scaleAnimation;
    imageCenter = new Point(imageView.getWidth() / 2, imageView.getHeight() / 2);

    // build animations
    scaleAnimation = new ScaleAnimation(scaleMin,scaleMax,scaleMin,scaleMax, imageCenter.x, imageCenter.y);
    scaleAnimation.setRepeatCount(0);

    // build animation set
    AnimationSet s = new AnimationSet(true);
    s.addAnimation(scaleAnimation);
    s.setDuration(time);
    s.setFillAfter(true);
    s.setInterpolator(interpolator);
    v.startAnimation(s);
}
我正在考虑改用ObjectAnimator,但这似乎有点不必要。当我制作动画时,肯定有办法告诉它使用全分辨率图像重画


提前谢谢

我意识到这是因为我通过毕加索调整了图像的大小。当我调整好尺寸后,它就没有问题了。我以为GPU缓存了一个最大可见分辨率的位图,所以在720p显示器上1080p图像会被压缩到720p,但我错了。完整的1080p图像,即使缩小了,也具有完整版本的所有细节。

使用scaleAnimation=new ScaleAnimationscaleMin、scaleMax、scaleMin、scaleMax、Animation.RELATIVE_TO_SELF、float 0.5、Animation.RELATIVE_TO_SELF、float 0.5;谢谢,但我得到了相同的结果:缓存的720p图像被放大,而不是原始的1080p图像:/