Android 使用特定手机的TouchImageView进行奇怪的缩放行为
不确定这里发生了什么,但我已经在ViewPager的图像库上实现了缩放功能,ImagePagerAdapter使用TouchImageView。在我所有的其他手机和平板电脑上,这段代码工作得非常完美,可以进行缩放和翻页。在我们的3个摩托罗拉RAZR上,第一张图片上的缩放动作很滑稽。我的意思是,当你尝试缩放图片时,图片1上什么也没发生。但是如果平移到下一个图像,则从图像1进行缩放会影响图像2。如果翻转回图像1,它仍然不会缩放。如果平移到图像#3,然后返回到#1,则第一个图像的缩放效果会很好。不知道如何解决这个问题,甚至不知道如何调试它。我从API中的示例中添加了自定义动画DepthPageTransformer。这是罪魁祸首,但不确定代码中的什么导致了这种行为Android 使用特定手机的TouchImageView进行奇怪的缩放行为,android,android-viewpager,android-pageradapter,touchimageview,android-pagetransformer,Android,Android Viewpager,Android Pageradapter,Touchimageview,Android Pagetransformer,不确定这里发生了什么,但我已经在ViewPager的图像库上实现了缩放功能,ImagePagerAdapter使用TouchImageView。在我所有的其他手机和平板电脑上,这段代码工作得非常完美,可以进行缩放和翻页。在我们的3个摩托罗拉RAZR上,第一张图片上的缩放动作很滑稽。我的意思是,当你尝试缩放图片时,图片1上什么也没发生。但是如果平移到下一个图像,则从图像1进行缩放会影响图像2。如果翻转回图像1,它仍然不会缩放。如果平移到图像#3,然后返回到#1,则第一个图像的缩放效果会很好。不知道
import android.annotation.SuppressLint;
import android.support.v4.view.ViewPager.PageTransformer;
import android.view.View;
public class DepthPageTransformer implements PageTransformer {
private static final float MIN_SCALE = 0.55f;
// suppress compiler warning...lower Api use standard slide in but
// APIs higher than 10 will use the transform page function
@SuppressLint("NewApi")
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
} else if (position <= 1) { // (0,1]
// Fade the page out.
view.setAlpha(1 - position);
// Counteract the default slide transition
view.setTranslationX(pageWidth * -position);
// Scale the page down (between MIN_SCALE and 1)
float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
导入android.annotation.SuppressLint;
导入android.support.v4.view.ViewPager.PageTransformer;
导入android.view.view;
公共类DepthPageTransformer实现PageTransformer{
专用静态最终浮动最小刻度=0.55f;
//抑制编译器警告…较低的Api使用标准滑入,但
//高于10的API将使用转换页面功能
@SuppressLint(“新API”)
公共页面(视图、浮动位置){
int pageWidth=view.getWidth();
if(位置<-1){/[-无穷大,-1)
//这个页面在屏幕的左边。
视图。setAlpha(0);
}否则,如果(位置显然是动画导致了这种奇怪的行为。不知道为什么,但直到我弄清楚,我必须删除这个动画的设置
galleryViewPager.setClickable(true);
//galleryViewPager.setAnimation(new DepthPageTransformer());
galleryViewPager.setOnClickListener(new OnClickListener() {...
现在fling动画正在使用标准。这一定是Motorola Razr实现适配器fling动画的方式,它扰乱了侦听器顺序