Я начал проект скелетного кода с открытым исходным кодом под названием Toggle Display Animate
https://marcnewton.github.io/Toggle-Display-Animate/
] Этот помощник скелета позволит вам легко подражать jQuery show / hide, но с анимациями перехода в CSS / CSS.
Он использует классные переключатели, поэтому вы можете использовать любые методы css, которые вы хотите использовать для элементов, кроме отображения: none | block | tableline inline и т. д., а также другие альтернативные варианты использования, которые можно придумать.
Его основная цель дизайна - для состояний переключения элементов, она поддерживает состояние возврата, где скрытие объекта позволяет вам запускать ключевой кадр в обратном порядке или играть альтернативную анимацию для скрытия элемента.
Большая часть разметки для концепции, над которой я работаю, - это CSS, на самом деле используется очень мало javascript.
демо здесь: http://marcnewton.co.uk/projects/toggle-display-animate/
Самый простой способ - повернуть всю кнопку (и, как предложил Фрэнк Н. Штейн в комментариях, возможно, лучше всего подходит ImageButton
, хотя вам нечего мешать использовать другой виджет).
Существует несколько способов поворота кнопки, но ViewPropertyAnimator
, скорее всего, самый простой:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float deg = button.getRotation() + 180F;
button.animate().rotation(deg).setInterpolator(new AccelerateDecelerateInterpolator());
}
});
Изменить: кстати, если вы хотите, чтобы стрелка была вы можете вместо этого попробовать:
float deg = (button.getRotation() == 180F) ? 0F : 180F;
вместо float deg = button.getRotation() + 180F;
Вы можете установить растровое изображение в качестве фона в кнопке.
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmapOrg,width,height,true);
Bitmap rotatedBitmap = Bitmap.createBitmap(scaledBitmap , 0, 0, scaledBitmap .getWidth(), scaledBitmap .getHeight(), matrix, true);
Сначала возьмите растровое изображение из любого источника, а затем поверните его, а затем установите в качестве фона в кнопке.
BitmapDrawable bdrawable = new BitmapDrawable(context.getResources(),bitmap);
button.setBackground(bdrawable);