Java 如何在android GridView中实现平移和收缩缩放手势?
我想用AndroidGridView制作一个板,如下所示- 我需要使用两个手指使GridView可以缩放,也可以平移。 做这件事的标准和简单方法是什么 我能够使用以下代码使imageview可缩放但不可平移-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
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中删除所有手势/缩放列表