English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Android 커스터마이즈드 뷰로 터치 슬라이딩 컨트롤 구현

이 컨트롤은 안드로이드 터치 슬라이딩 컨트롤의 구체적인 코드를 공유하여 참고하도록 하였습니다. 구체적인 내용은 다음과 같습니다

1.빈자리 컨트롤 클래스 생성: MyView

public class MyView extends Button{}}
//최근 슬라이딩 후의 좌표 값을 기록합니다
private int lastX;
private int lastY;
public MyView(Context context) {
  super(context);
  // TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs){
  super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
  // 스크린의 xy 좌표에 대한 view를 가져옵니다
  int x = (int) event.getRawX();
  int y = (int) event.getRawY();
  switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
      break;
    case MotionEvent.ACTION_MOVE:
      int deltaX = x-lastX;
      int deltaY = y-lastY;
      int translationX = (int) (ViewHelper.getTranslationX(this) + deltaX);
      int translationY = (int) (ViewHelper.getTranslationY(this) + deltaY);
      ViewHelper.setTranslationX(this, translationX);
      ViewHelper.setTranslationY(this, translationY);
      break;
    case MotionEvent.ACTION_UP:
      break;
    default:
      break;
  }
  lastX = x;
  lastY = y;
  return true;
}

위 코드는 사용자 슬라이딩을 감지하기 위해 onTouchEvent() 메서드를 재정의한 커스텀 버튼 클래스입니다. 슬라이딩에 대해 이야기하는 것이므로, 이동량의 개념이 존재합니다.

translationX、translationY는 View의 좌상단이 부모 레이아웃에 대한 이동량입니다. 세 번째 party nineoldandroids를 통해 애니메이션 슬라이딩을 구현합니다.

ViewHelper.getTranslationY(this)는 해당 View의 이동량을 계산하며, 초기值为0, 왼쪽으로 이동하는值为 음수, 오른쪽으로 이동하는值为 양수.

2.xml 레이아웃

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
>
 <com.example.administrator.slide.MyView
   android:id="@"+id/myview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="나는 드래그할 수 있습니다"/>
</RelativeLayout>

이것이 본문의 전체 내용입니다. 여러분의 학습에 도움이 되길 바랍니다. 또한, 예우教程에 대한 지지를 많이 해 주시길 바랍니다.

선언: 본문 내용은 인터넷에서 가져왔으며, 저작권자는 본문의 원저자입니다. 본 웹사이트는 본문에 대한 소유권을 가지지 않으며, 인공적으로 편집된 것이 아니며, 관련 법적 책임을 부담하지 않습니다. 저작권 위반이 의심되는 내용이 있으면 notice#w로 이메일을 보내 주십시오.3codebox.com에 대한 신고를 할 때, #을 @으로 변경하십시오. 관련 증거를 제공하시면, 해당 내용이 저작권 위반으로 확인되면 즉시 해당 내용을 제거할 것입니다.

추천 합니다