Я нашел новичками учебник здесь: http://androidrox.wordpress.com/2011/05/13/android-sample-app-drag-and-drop-image-using-touch/Android - как просто перетащить кнопку?
здесь код XML в моем случае:
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/absLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Countries" />
</AbsoluteLayout>
MainActivity.java:
public class MainActivity extends Activity {
AbsoluteLayout absLayout;
Button myButton = null;
boolean touched = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
absLayout = (AbsoluteLayout) findViewById(R.id.absLayout);
myButton = (Button) findViewById(R.id.myButton);
myButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
touched = true;
return false;
}
});
absLayout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(touched == true) // any event from down and move
{
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,(int)event.getX()-button_Countries.getWidth()/2,(int)event.getY()-myButton.getHeight()/2);
myButton.setLayoutParams(lp);
}
if(event.getAction()==MotionEvent.ACTION_UP){
touched = false;
}
return true;
}
});
}
В основном то, что происходит здесь, мне нужно touch myButton один раз для преобразования логического коснулся на true. Тогда я мог бы перетащить myButton, начав касаться в любом месте absLayout. Как я могу просто перетащить кнопку без необходимости касания кнопки?
Я попробовал установить LayoutParams на прослушиватель touch-touch myButton. Это вызывает мерцание при перетаскивании.
Также AbsoluteLayout всегда помечен как устаревший. Что означает «устаревший»? Означает ли это устаревшее и, следовательно, непригодное для использования? Или можно использовать, но может быть лучшее решение?
Проверьте подобный вопрос и мой ответ [здесь] [1] [1]: http://stackoverflow.com/questions/20606802/how-to-swipe-a-button-ontouch -event-in-android/20607696 # 20607696 – GrIsHu