[Android] 드래그 앤 드롭 설치
개요
응용 프로그램을 만드는 동안 뷰를 끌어다 놓으려는 경우가 있다고 생각합니다.
이번에는 View 드래그 앤 드롭을 구현하는 방법에 대해 설명합니다.
개발 환경
절차.
1. layout 파일에서 View 구성
우선,layout 파일에 View를 설정합니다.
뷰 레벨을 물려받으면 뭐든지 돼요.
이번에는 TextView를 사용하여 설명합니다.
activity_main.xml<!-- ドラッグ&ドロップするView -->
<TextView
android:id="@+id/dragged_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="50sp"/>
2. 길게 누르는 설치
위의 TextView를 길게 누르면 드래그 앤 드롭할 수 있습니다.
다음은 코드상의 처리다.
1. 먼저 MainActivity에 On LongClickListener를 설치합니다.
MainActivity.javapublic class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
...
/* OnLongClickListenerを実装したViewが長押しされた際に呼び出されるメソッド */
@Override
public boolean onLongClick(View v) {
/* ここに長押しした際の処理を記述します */
return true;
}
2. layout 파일에서 드래그할 TextView를 가져옵니다.
MainActivity.javapublic class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
/* 先ほどのTextViewをメンバ変数で保持 */
private View mDraggedView;
/* 画面起動前のViewの初期化処理などを行うメソッド */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* layoutファイルからTextViewを取得 */
mDraggedView = findViewById(R.id.dragged_view);
/* OnLongClickListenerをTextViewにセット */
mDraggedView.setOnLongClickListener(this);
}
3. 전체 코드는 다음과 같다.
MainActivity.java/* View.OnLongClickListenerの実装 */
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
/* 先ほどのTextViewをメンバ変数で保持 */
private View mDraggedView;
/* 画面起動前のViewの初期化処理などを行うメソッド */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* layoutファイルからTextViewを取得 */
mDraggedView = findViewById(R.id.dragged_view);
/* OnLongClickListenerをTextViewにセット */
mDraggedView.setOnLongClickListener(this);
}
/* OnLongClickListenerを実装したViewが長押しされた際に呼び出されるメソッド */
@Override
public boolean onLongClick(View v) {
/* ここに長押しした際の処理を記述します */
return true;
}
}
3. 드래그 앤 드롭 시작
startDrag()
방법을 사용하여 검색한 TextView를 끌어 놓습니다.
방금 기술한 onLongClick()
내에서 집행startDrag()
방법.
코드는 다음과 같습니다.
MainActivity.java/* OnLongClickListenerを実装したViewが長押しされた際に呼び出されるメソッド */
@Override
public boolean onLongClick(View v) {
/* ここに長押しした際の処理を記述します */
/* ドラッグ&ドロップ処理を開始する */
v.startDrag(null, new View.DragShadowBuilder(v), v, 0);
return true;
}
그러면 View를 잠시 끌 수 있습니다.
startDrag () 방법에서 전달된 4개의 매개 변수 정보
1.ClipData data
ClipData 전송 방법
드래그 앤 드롭 중에 ClipData에 저장된 데이터를 추출할 수 있습니다.
ClipData는 문자열과 Intent 등을 유지할 수 있습니다.
이번에는 데이터를 제출할 필요가 없어서,null을 지정했습니다.
2.DragShadowBuilder shadowBuilder
DragShadow Builder, 말 그대로 드래그할 때 그림자가 생기는 클래스입니다.
이번 예를 들어 Hello, World라고 적힌 TextView의 얇은 분신이 긴 시간에 생성될 것이다
이것은 드래그를 통해 분신을 이동하는 인상을 줄 것이다.
이 분신을 생성한 것이 바로 DragShadow Builder다.
이번에는 특별히 상세한 지정은 없지만 음영의 크기와 드래그할 때 손가락의 위치 관계 등을 사용자 정의할 수 있다.
3.Object myLocalState
메소드의 세 번째 매개변수로 View를 전달한 후 드래그 앤 드롭 처리 알림을 받는 메소드에서 View를 Local State(드래그 앤 드롭 View)로 자신하고 Object를 통해 받을 수 있습니다.
드래그된 View에 대해 수행할 수 있는 작업은 무엇입니까?
4.int flags
이건 잘 모르겠다(웃음)
View급 소스를 보면 0을 줘도 문제없다.
끝말
이번에는 View의 드래그 앤 드롭 설치 방법에 대해 설명했습니다.
다음에는 드래그 후 처리와 처리를 설명하고 싶습니다.
만약 이해하기 어려운 부분이나 보도, 코드에 대한 지적이 있다면
편하게 말씀해 주셨으면 좋겠습니다.
마지막으로 이 기사를 읽어 주셔서 감사합니다.
이상
Reference
이 문제에 관하여([Android] 드래그 앤 드롭 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/umechanhika/items/56add1e55f0ed921a596
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<!-- ドラッグ&ドロップするView -->
<TextView
android:id="@+id/dragged_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="50sp"/>
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
...
/* OnLongClickListenerを実装したViewが長押しされた際に呼び出されるメソッド */
@Override
public boolean onLongClick(View v) {
/* ここに長押しした際の処理を記述します */
return true;
}
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
/* 先ほどのTextViewをメンバ変数で保持 */
private View mDraggedView;
/* 画面起動前のViewの初期化処理などを行うメソッド */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* layoutファイルからTextViewを取得 */
mDraggedView = findViewById(R.id.dragged_view);
/* OnLongClickListenerをTextViewにセット */
mDraggedView.setOnLongClickListener(this);
}
/* View.OnLongClickListenerの実装 */
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener {
/* 先ほどのTextViewをメンバ変数で保持 */
private View mDraggedView;
/* 画面起動前のViewの初期化処理などを行うメソッド */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* layoutファイルからTextViewを取得 */
mDraggedView = findViewById(R.id.dragged_view);
/* OnLongClickListenerをTextViewにセット */
mDraggedView.setOnLongClickListener(this);
}
/* OnLongClickListenerを実装したViewが長押しされた際に呼び出されるメソッド */
@Override
public boolean onLongClick(View v) {
/* ここに長押しした際の処理を記述します */
return true;
}
}
/* OnLongClickListenerを実装したViewが長押しされた際に呼び出されるメソッド */
@Override
public boolean onLongClick(View v) {
/* ここに長押しした際の処理を記述します */
/* ドラッグ&ドロップ処理を開始する */
v.startDrag(null, new View.DragShadowBuilder(v), v, 0);
return true;
}
이번에는 View의 드래그 앤 드롭 설치 방법에 대해 설명했습니다.
다음에는 드래그 후 처리와 처리를 설명하고 싶습니다.
만약 이해하기 어려운 부분이나 보도, 코드에 대한 지적이 있다면
편하게 말씀해 주셨으면 좋겠습니다.
마지막으로 이 기사를 읽어 주셔서 감사합니다.
이상
Reference
이 문제에 관하여([Android] 드래그 앤 드롭 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/umechanhika/items/56add1e55f0ed921a596텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)