터치로 설명 된 위치에 Android 애플리케이션의 버튼을 어떻게 추가합니까?터치로 설명 된 위치에서 Android 애플리케이션에 버튼을 어떻게 추가합니까?
내가 빈 활동을하고 터치 리스너를 사용하여 터치하면 x, y 좌표를 얻을 수 있다고 상상해보십시오. 터치 할 때 위치 (x, y)에 버튼을 삽입하려면 동적으로 터치했습니다. 어떻게해야합니까?
터치로 설명 된 위치에 Android 애플리케이션의 버튼을 어떻게 추가합니까?터치로 설명 된 위치에서 Android 애플리케이션에 버튼을 어떻게 추가합니까?
내가 빈 활동을하고 터치 리스너를 사용하여 터치하면 x, y 좌표를 얻을 수 있다고 상상해보십시오. 터치 할 때 위치 (x, y)에 버튼을 삽입하려면 동적으로 터치했습니다. 어떻게해야합니까?
레이아웃에 많은 위젯이 있습니다. 그래서 나는 처음에 그것들을 모두 보이지 않게하고 터치하여 새로운 x, y 좌표를 지정했습니다. 터치하고 터치의 x, y 좌표에 "Object Animator"을 사용하여 위젯을 이동합니다 (예 : 버튼).
활동의 일부 레이어에서 fill_parent 너비와 높이를 갖는 상대 레이아웃이 필요합니다. 누군가가 화면을 클릭하면 포인트를 얻고 ontouchlistener를 가져와 상대 레이아웃에 해당 x와 y로 새로운 이미지 뷰를 만들지 만 상대 레이아웃은 전체 활동 화면에 중첩되어 정확한 x와 y를가집니다. 장치 화면.
내가 정확히 특정 위치에 버튼을 만들 수 있는지 여부를 잘 모릅니다 ontouchlistenerimg.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
event.getX() //cordinates wrt view
event.getRawX() //abs cordinates on screen
event.getY() //cordinates wrt view
event.getRawY() //abs cordinates on screen
return false;
}
});
에 의해 x와 y를 얻을 수 있습니다. AbsoluteLayout을 사용하여이 작업을 수행 할 수 있었지만 이제는 더 이상 사용되지 않습니다.
처음에는 레이아웃에서 버튼을 정의하고 보이지 않게 유지한 다음 터치 이벤트에서 Translate Animation을 사용하여 특정 위치로 이동하는 것이 좋습니다. 또한 단추를 보이게하는 것을 잊지 마라.
고맙습니다. 전에는 애니메이션을 사용한 적이 없었습니다. 데모 예제가 있습니까? – Giz
여기에 하나의 데모를 텍스트 상자에 게시하십시오. 당신은 당신의 요구 사항을 바꿀 수 있습니다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_height="fill_parent" android:layout_width="fill_parent">
<LinearLayout android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="horizontal"
android:id="@+id/layout_map"
>
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="One"
/>
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="One"
/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
MainActivity.java
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
FrameLayout frmLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
frmLayout = (FrameLayout) findViewById(R.id.frameLayout1);
frmLayout.setFocusable(true);
LinearLayout et = new LinearLayout(this);
frmLayout.addView(et, 100, 100);
frmLayout.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.i("TESTING",
"touch x,y == " + event.getX() + "," + event.getY());
frmLayout.setPadding(Math.round(event.getX() - 20),
Math.round(event.getY()), 0, 0);
return true;
}
});
}
당신은 X를 얻을 수와 y는 onTouchEvent를 조정합니다.
onTouchEvent (MotionEvent 이벤트)를 재정의 한 다음 event.getX() 및 event.getY()를 호출하여 사용자가 터치 한 좌표 위치를 가져와야합니다 (부동 상태 임).
그런 다음 AbsoluteLayout을 사용하고 하위 항목에 android : layout_x 및 android : layout_y를 지정해야합니다. (AbsoluteLayouts는 일반적으로 사용되지 않습니다)
시도해 본 내용이 있습니까? –