在viewflipper中缩放图像

时间:2012-03-23 21:49:06

标签: android image viewflipper zooming

我使用ViewFlipper创建了一个图片幻灯片。 我用过imageFrame.setOnTouchListener(gestureListener);收听用户触摸事件,如单击,长按

但是现在我想在幻灯片放映(ViewFlipper)中放大/缩小当前图像,由用户双击。我已经在网上搜索了这个但是找不到解决方案。请帮帮我。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但一种简单的方法是使用平台的ZoomControls widget,这是一个由+/-按钮组成的简单小部件。您可以附加onZoomInClickListeneronZoomOutClickListener来处理ZoomControls小部件的触摸。

在处理程序中,您可以缩放图像。下面是一些使用ScaleAnimation进行缩放的示例代码:

iv = (ImageView) findViewById(R.id.imageview);
zc = (ZoomControls) findViewById(R.id.zoom_controls);
zc.setOnZoomInClickListener(new OnClickListener() {
    public void onClick(View v) {
        float oldZoom = currentZoom;
        currentZoom = currentZoom * 1.25;
        zc.setIsZoomOutEnabled(true);
        if (3.0 < currentZoom) {
            zc.setIsZoomInEnabled(false);
        }
        scaleAnim = new ScaleAnimation(oldZoom, currentZoom, oldZoom, currentZoom, 0, 0);
        scaleAnim.setFillAfter(true);
        iv.startAnimation(scaleAnim);
    }
});
zc.setOnZoomOutClickListener(new OnClickListener() {
    public void onClick(View v) {
        float oldZoom = currentZoom;
        currentZoom = currentZoom / 1.25;
        zc.setIsZoomInEnabled(true);
        if (0.33 > currentZoom) {
            zc.setIsZoomOutEnabled(false);
        }
        scaleAnim = new ScaleAnimation(oldZoom, currentZoom, oldZoom, currentZoom, 0, 0);
        scaleAnim.setFillAfter(true);
        iv.startAnimation(scaleAnim);
    }
});