Я нахожусь на Android Lollipop (minSdk = 21) и хочу реализовать перемещение плавающей кнопки Action с помощью жестов перетаскивания. Кнопка представляет собой пользовательский подкласс ImageButton, код описан здесь, поэтому я не буду его повторять: Define default values for layout_width and layout_height properties for a subclass in a styleТеневая тень квадратная для круглой кнопки с плавающим действием
Для перетаскивания я использую описанный здесь способ: http://developer.android.com/guide/topics/ui/drag-drop.html. Вот то, что мой код выглядит следующим образом:
favoriteButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.startDrag(null, new View.DragShadowBuilder(v), null, 0);
return true;
}
});
findViewById(R.id.test_main_layout).setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_ENTERED:
favoriteButton.setVisibility(View.INVISIBLE);
break;
case DragEvent.ACTION_DROP:
favoriteButton.setX(event.getX() - favoriteButton.getWidth()/2);
favoriteButton.setY(event.getY() - favoriteButton.getHeight()/2);
favoriteButton.setVisibility(View.VISIBLE);
break;
}
return true;
}
});
Как правило, это работает, но проблема заключается в «перетащить тень»: это квадрат. По той или иной причине он не соблюдает овальную схему FAB.
Как я могу заставить его вести себя правильно?