setOnTouchListener() 메서드를 사용하여 비트 맵 내부에서 ImageView를 손가락으로 움직여 선을 그려 봅니다.OnTouchListener의 캔버스에 그리기
다음은 코드입니다.
@Override
public boolean onTouch(View view, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
break;
case MotionEvent.ACTION_MOVE:
upx = event.getX();
upy = event.getY();
canvas.drawLine(downx, downy, upx, upy, paint);
photoView.invalidate();
break;
case MotionEvent.ACTION_UP:
canvas.drawBitmap(notChangedRotatedBitmap, new Matrix(), paint);
photoView.invalidate();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
문제는 이벤트 객체에 의해 반환 된 좌표가 2를 곱한처럼 나는 거의 내 손가락 아래 시작 왼쪽 상단 모서리 근처 내 손가락 이동을 시작하면 있기 때문에, lookes 것입니다,하지만 난 내를 이동할 때 손가락이 왼쪽 상단 모서리에서 멀어지면 선이 훨씬 빨리 커지고 내 움직임이 (약 2 배 빨라짐) 곧 뷰의 경계를 넘어갑니다. 반면에 오른쪽 아래 모서리 근처에서 손가락을 움직이면 왼쪽 상단 모서리쪽으로 움직이는 이미지의 중심을 교차 할 때까지는 표시되지 않습니다.
UPD> 게다가,이 이미지 뷰에 속성을 사용
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
캔버스가 당신의 활동 분야입니까? 어떻게 초기화합니까? – Michael
필드에서 캔버스를 초기화합니다. Canvas canvas = new Canvas(); 그런 다음 canvas.setBitmap (rotatedBitmap); 터치 시작. 실제로 setBitmap을 사용하는이 줄은 제공된 코드의 세 번째 줄 다음에 나옵니다. – TpoM6oH