Java 如何在android GridView中实现平移和收缩缩放手势?

Java 如何在android GridView中实现平移和收缩缩放手势?,java,android,android-layout,android-studio,gridview,Java,Android,Android Layout,Android Studio,Gridview,我想用AndroidGridView制作一个板,如下所示- 我需要使用两个手指使GridView可以缩放,也可以平移。 做这件事的标准和简单方法是什么 我能够使用以下代码使imageview可缩放但不可平移- public class MainActivity extends Activity { private ImageView imageView; private float scale = 1f; private ScaleGestureDetector de

我想用AndroidGridView制作一个板,如下所示-

我需要使用两个手指使GridView可以缩放,也可以平移。 做这件事的标准和简单方法是什么

我能够使用以下代码使imageview可缩放但不可平移-

public class MainActivity extends Activity {

    private ImageView imageView;
    private float scale = 1f;
    private ScaleGestureDetector detector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView=(ImageView)findViewById(R.id.imageView);
        detector = new ScaleGestureDetector(this,new ScaleListener());
    }

    public boolean onTouchEvent(MotionEvent event) {
//  re-route the Touch Events to the ScaleListener class
        detector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {


        float onScaleBegin = 0;
        float onScaleEnd = 0;

        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            scale *= detector.getScaleFactor();
            imageView.setScaleX(scale);
            imageView.setScaleY(scale);
            return true;
        }

        @Override
        public boolean onScaleBegin(ScaleGestureDetector detector) {

            Toast.makeText(getApplicationContext(),"Scale Begin" ,Toast.LENGTH_SHORT).show();
            onScaleBegin = scale;

            return true;
        }

        @Override
        public void onScaleEnd(ScaleGestureDetector detector) {

            Toast.makeText(getApplicationContext(),"Scale Ended",Toast.LENGTH_SHORT).show();
            onScaleEnd = scale;

            if (onScaleEnd > onScaleBegin){
                Toast.makeText(getApplicationContext(),"Scaled Up by a factor of  " + String.valueOf( onScaleEnd / onScaleBegin ), Toast.LENGTH_SHORT  ).show();
            }

            if (onScaleEnd < onScaleBegin){
                Toast.makeText(getApplicationContext(),"Scaled Down by a factor of  " + String.valueOf( onScaleBegin / onScaleEnd ), Toast.LENGTH_SHORT  ).show();
            }

            super.onScaleEnd(detector);
        }
    }
}
公共类MainActivity扩展活动{
私人影像视图;
专用浮标=1f;
专用电子秤检测器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(imageView)findViewById(R.id.imageView);
检测器=新的scalegestruedetector(这个,新的ScaleListener());
}
公共布尔onTouchEvent(运动事件){
//将触摸事件重新路由到ScaleListener类
探测器。开孔(事件);
返回super.onTouchEvent(事件);
}
私有类ScaleListener扩展了scalegestruedetector.SimpleOnScalegestrueListener{
scalebegin上的float=0;
scaleend上的float=0;
@凌驾
公共布尔标度(scalegestruedetector检测器){
scale*=检测器。getScaleFactor();
imageView.setScaleX(比例);
imageView.setScaleY(比例);
返回true;
}
@凌驾
公共布尔onScaleBegin(ScaleGetStereDetector检测器){
Toast.makeText(getApplicationContext(),“缩放开始”,Toast.LENGTH\u SHORT.show();
onScaleBegin=规模;
返回true;
}
@凌驾
标度仪上的公共空隙(标度仪检测器){
Toast.makeText(getApplicationContext(),“缩放结束”,Toast.LENGTH\u SHORT.show();
onScaleEnd=规模;
如果(onScaleEnd>onScaleBegin){
Toast.makeText(getApplicationContext(),“按”+String.valueOf(onScaleEnd/onScaleBegin)的因子放大),Toast.LENGTH_SHORT.show();
}
if(onScaleEnd

在这段代码中,我尝试用gridview替换imageview部分。但这不起作用。我如何正确地实现它?

使用此库。将其用作容器,并将gridview放在其中。并从GridView中删除所有手势/缩放列表器使用此库。将其用作容器,并将gridview放在其中。并从gridview中删除所有手势/缩放列表