Android 드래그 효 과 를 실현 하 는 두 가지 방법
private void initListener(){
screenWidth = getScreenWidth(this);//
screenHeight = getScreenHeight(this) - getStatusHeight(MainActivity.this);// -
testTv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY;
int top = v.getTop() + dy;
int left = v.getLeft() + dx;
if (top <= 0) {
top = 0;
}
if (top >= screenHeight - testTv.getHeight() ) {
top = screenHeight - testTv.getHeight();
}
if (left >= screenWidth - testTv.getWidth()) {
left = screenWidth - testTv.getWidth();
}
if (left <= 0) {
left = 0;
}
v.layout(left, top, left+v.getWidth(), top+v.getHeight());
v.postInvalidate();
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
}
return true;// false true
}
});
}
그러나 제 프로젝트 자 체 는 낙서 인터페이스 가 있 고 복잡 한 사건 도 많 습 니 다.이상 한 효과 가 있 을 것 입 니 다.떨 림 이 심 하고 가끔 원래 의 위치 로 돌아 간 후에 이 v.layot(left,top,left+v.getWidth(),top+v.getHeight()를 발 견 했 습 니 다.프로젝트 의 수요 에 맞지 않 을 수도 있 기 때문에 나 는 다른 해법 을 생각 했다.코드 는 다음 과 같 습 니 다:
private void initListener(){
screenWidth = getScreenWidth(this);//
screenHeight = getScreenHeight(this) - getStatusHeight(MainActivity.this);// -
testTv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY;
int top = v.getTop() + dy;
int left = v.getLeft() + dx;
if (top <= 0) {
top = 0;
}
if (top >= screenHeight - testTv.getHeight() ) {
top = screenHeight - testTv.getHeight();
}
if (left >= screenWidth - testTv.getWidth()) {
left = screenWidth - testTv.getWidth();
}
if (left <= 0) {
left = 0;
}
RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(v.getWidth(), v.getHeight());
param.leftMargin = left;
param.topMargin = top;
v.setLayoutParams(param);
// v.layout(left, top, left+v.getWidth(), top+v.getHeight());
v.postInvalidate();
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
효 과 는 다음 그림 과 같 습 니 다:될 것 같 지만 주의해 야 할 사항 이 있 습 니 다.키보드 팝 업 은 스스로 처리 해 야 합 니 다.(예 를 들 어 팝 업 키보드 로 처리 하면 이런 것들 을 이동 할 수 없고 그렇지 않 으 면 변형 될 수 있 습 니 다)저 는 이런 기법 이 여러 가지 복잡 한 장면 에 응용 할 수 있다 고 생각 합 니 다.자,오늘 의 일부 프로젝트 문 제 는 여기까지 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.코드 도 올 렸 습 니 다.주 소 는 다음 과 같 습 니 다Android 드래그 효과 구현
위 에서 말 한 것 은 안 드 로 이 드 가 드래그 효 과 를 실현 하 는 것 을 소개 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.