마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

matrix 이용해서 이미지뷰 이동 구현하였는데 이미지뷰의 각 모서리 좌표를 알고싶습니다.

0 추천
public class Touch extends Activity implements OnTouchListener {
 private static final String TAG = "Touch";
 
 Matrix matrix = new Matrix();
 private Matrix savedMatrix = new Matrix();
 private Matrix savedMatrix2 = new Matrix();
 
 static final int NONE = 0;
 static final int DRAG = 1;
 
 int mode = NONE;
 
 private PointF start = new PointF();
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  ImageView view = (ImageView) findViewById(R.id.imageView);
  view.setOnTouchListener(this);
 }
 
 @Override
 public boolean onTouch(View v, MotionEvent event) {
  ImageView view = (ImageView) v;
 
  switch (event.getAction() & MotionEvent.ACTION_MASK) {
  case MotionEvent.ACTION_DOWN:
   savedMatrix.set(matrix);
   start.set(event.getX(), event.getY());
   Log.d(TAG, "mode=DRAG");
   mode = DRAG;
   break;
  case MotionEvent.ACTION_UP:
  case MotionEvent.ACTION_POINTER_UP:
   mode = NONE;
   Log.d(TAG, "mode=NONE");
   break;
  case MotionEvent.ACTION_MOVE:
   if (mode == DRAG) {
    // ...
    matrix.set(savedMatrix);
    matrix.postTranslate(event.getX() - start.x, event.getY()
      - start.y);
   }
   break;
  }
 
  view.setImageMatrix(matrix);
  return true; // indicate event was handled
 }
 
}
 
 
----------------------
 
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="matrix"
        android:src="@drawable/butterfly" >
    </ImageView>
 
</FrameLayout>

안녕하세요.

어제 질문을 올렸는데 해결되지 않은 부분이 있어 다시 질문 올립니다.

matrix를 이용해서 이미지뷰를 드래그해서 이동하는 로직을 구현하였는데 디스플레이 화면 밖으로 이미지뷰가 이동하는것을 제한하고 싶습니다.

이미지뷰의 각 모서리 좌표를 구해서 0보다 작거나 화면의 크기보다 커지면 이동하지 않도록 구현을 하고 싶은데

저는 이미지뷰 좌표를 구하기 힘들더라구요.....view.getLeft, getRigth, getTop, getBottom으로 구하면 처음 위치만 출력되고 변하는 위치는 출력이 되지 않았습니다..

혹시 드래그해서 이동되는 실시간 좌표를 구할 수 있는 방법이 있나요?

아니면 다른 방법이라도...도움 주시면 감사하겠습니다!

익명사용자 님이 2014년 9월 12일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...