2014-12-05 6 views
0

이미지보기를 클릭하고 스크롤 할 수 있지만 이미지보기를 터치하고 "동작 이동"을 수행 할 때 스크롤하지 않고 대신 "클릭 이벤트"를 수행하는 것이 발생했습니다! 나는 터치 할 때 두 가지 의미를 모두 할 수 있기를 원하지만 스크롤해야한다.하지만 터치 할 때 클릭을 수행해야한다. imageView 클릭 가능 및 스크롤 가능

이 사전

에서 덕분에 난 그냥 아래의 코드처럼 "onTouch 리스너"를 구현

ImageView ivUser = (ImageView) findViewById(R.id.ivUser); 
    ivUser.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(StoryDetails.this, ProfileView.class); 
      intent.putExtra("id", usersid); 
      Log.d("ivUser attempt", usersid); 
      startActivity(intent); 
     } 
    }); 

했을하지만 난 다음에 수행 할 작업에 대한 어떤 생각이없는 것입니다!

ivPost.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: { 
       Log.d("ACTION_DOWN", "ACTION_DOWN"); 
       break; 
      } 
      case MotionEvent.ACTION_MOVE:{ 
       Log.d("ACTION_MOVE", "ACTION_MOVE"); 
       break; 
      } 
      case MotionEvent.ACTION_CANCEL:{ 
       Log.d("LENGTH_LONG!", "LENGTH_LONG"); 
       break; 
      } 
      } 
      return true; 
     } 
    }); 
+0

가 .. 당신의 대답에 BRB 대답있어 전역 변수를해야한다 일부 집 전화 – Elltz

+0

방금 ​​아래 코드와 같은 "onTouch 리스너"를 구현했지만 다음에해야 할 일에 대해 전혀 모릅니다! – Icefall007

+0

선생님, 깊은 존경심을 가지고 처음에는 onClick listener ..하지만 ima는 곧 답변을 드리겠습니다. – Elltz

답변

0
image.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getBaseContext(), "image clicked", Toast.LENGTH_LONG).show(); 
     } 
    }); 

    image.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View arg0, MotionEvent arg1) { 
      // TODO Auto-generated method stub    
      switch (arg1.getAction()) { 
      case MotionEvent.ACTION_UP: 
       // where user releases finger 
       if(!moved){ 
        Toast.makeText(getBaseContext(), String.valueOf(moved), Toast.LENGTH_SHORT).show(); 
        image.performClick(); // you use this if you badly need the onclick listener 
        // but you can replace and put your onclick listener codes directly here 
       } 
       break; 

      case MotionEvent.ACTION_MOVE: 
       moved = true; 
       Toast.makeText(getBaseContext(), "image is moving", Toast.LENGTH_SHORT).show(); 
       Toast.makeText(getBaseContext(), String.valueOf(moved), Toast.LENGTH_SHORT).show(); // scroll your stuff here, meaning put the scrolling codes here 
       break; 

      case MotionEvent.ACTION_DOWN:     
       //this is where touch is trigered, you can call the performclick function here     
       // this will always b called first but we can do some boolean magic here.. 
       moved = false; 
       break; 
      } 
      return true; 
     } 
    }); 

당신의 부울 당신이 이미지 뷰가 초기 논리 무엇 clicked..so 때 trigered됩니다 setonclicklistener를 사용하는 private boolean moved; // this is the boolean

+0

제발 스크롤 코드로 나를 도울 수 있습니까? – Icefall007

+0

나는 또한 항상 "action_move"전에 "action_down"을 호출하는 것으로 나타났습니다! – Icefall007

+0

네, 선생님, 그 촉각이 화면에 파견 될 때 삼각 지어졌습니다. 네, 스크롤 코드에 대해 어떻게 생각하세요? @ Icefall007 – Elltz