2014-01-22 2 views
2

ScaleGestureDetector를 사용했습니다. 이 코드를 사용하지만 조각에서 작동 나던 또한 그것은 어떤 오류가 사람이 미리 이 고맙습니다 저를 도울 수 바랍니다 보여 나던하지만 난 활동에 동일한 코드를 사용하면 완벽하게조각에서 ZoomPinch 제스처를 구현하는 방법

public class Fragment2 extends Fragment { 
ImageView imgZoom; 
Matrix matrix = new Matrix(); 
float scale = 1f; 
ScaleGestureDetector SGD; 

// Keep all Images in array 
     Integer[] mThumbIds = { 
       R.drawable. car1, R.drawable.car2, 
       R.drawable.car3, R.drawable.car4, 
       R.drawable.car5,R.drawable.car6, 
       R.drawable.car7,R.drawable.car8, 
       R.drawable.car9,R.drawable.car10, 
       R.drawable.car11,R.drawable.car12 
       }; 



    @Override 
    public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 
     /** 
      * Inflate the layout for this fragment 
      */ 
     View view = inflater.inflate(R.layout.fragment2,container,false); 

     //Sets the title of the Bar 
     final ActionBar bar = getActivity().getActionBar(); 
     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     bar.setTitle("Pinch to zoom"); 

     //Recives the value of position sent from Fragment1 
     int pos=getArguments().getInt("position"); 

     Button btnBack=(Button)view.findViewById(R.id.btnBack); 

     imgZoom=(ImageView)view.findViewById(R.id.imageViewZoom); 
     imgZoom.setImageResource(mThumbIds[pos]); 
     SGD = new ScaleGestureDetector(view.getContext(),new ScaleListener()); 

     btnBack.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent mainScreen = new Intent(getActivity(), MainActivity.class); 
      startActivity(mainScreen); 
     } 
    }); 

     return view; 
    } 
    public boolean onTouchEvent(MotionEvent ev) { 
     SGD.onTouchEvent(ev); 
     return true; 
    } 

    private class ScaleListener extends ScaleGestureDetector. 
    SimpleOnScaleGestureListener { 
    @Override 
    public boolean onScale(ScaleGestureDetector detector) { 
     scale *= detector.getScaleFactor(); 
     scale = Math.max(0.1f, Math.min(scale, 5.0f)); 
     matrix.setScale(scale, scale); 
     imgZoom.setImageMatrix(matrix); 
     return true; 
    } 
} 

를 작동 }

+0

제발 도와주세요 .............. – Rahul

답변

0

시도해보십시오. 그것은 나를 위해 일합니다.

view.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      SGD.onTouchEvent(motionEvent); 
      return true; 
     } 
    }); 
관련 문제