Как вы поворачиваете значок на кнопке с изображением без поворота фактической кнопки? [Дубликат]

Я начал проект скелетного кода с открытым исходным кодом под названием 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/

3
задан kumar 25 November 2015 в 12:18
поделиться

2 ответа

Самый простой способ - повернуть всю кнопку (и, как предложил Фрэнк Н. Штейн в комментариях, возможно, лучше всего подходит 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;

12
ответ дан PPartisan 24 August 2018 в 01:15
поделиться

Вы можете установить растровое изображение в качестве фона в кнопке.

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);
1
ответ дан Kling Klang 24 August 2018 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: