анимация становится прерывистой или, кажется, не работает, когда помещается поверх LayerDrawable - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть LayerDrawable, который я создаю в коде, потому что я должен выполнить некоторую фильтрацию цвета для отдельных компонентов многоуровневого изображения.Поверх многослойного изображения я должен расположить ImageViews друг над другом, и один из них должен быть невидимым.При щелчке видимого ImageView он поворачивается на 90 и становится невидимым, а невидимый ImageView становится видимым и поворачивается с -90 на 0.

Моя проблема заключается в том, что я добавил LayerDrawable, который состоит из 8 pngsАктивность анимации работала не так хорошо, как раньше.Он стал очень изменчивым или вообще не вращался.

У кого-нибудь есть идеи по этому поводу?

1 Ответ

0 голосов
/ 21 февраля 2012

Я не уверен, что это лучший способ, но я закончил тем, что сам сделал композицию изображения.Рисуя все 8 изображений на одном растровом изображении и применяя это единственное растровое изображение к ImageView, я смог заставить свою анимацию работать так, как я хотел.Теперь, когда я хочу обновить часть составного изображения, я должен внести изменения в составное растровое изображение и применить его к моему представлению изображения.

    final BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inPreferredConfig = Config.ARGB_8888;

    Bitmap bitmap = BitmapFactory.decodeResource( this.getResources(), this.houseMatrix[0][0], opt );

    final int width = bitmap.getWidth();
    final int height = bitmap.getHeight();

    final Bitmap result = Bitmap.createBitmap( width, height, Config.ARGB_8888 );

    final Paint paint = new Paint();
    paint.setColorFilter( new PorterDuffColorFilter( this.houseMatrix[0][1], PorterDuff.Mode.MULTIPLY ) );
    final Canvas canvas = new Canvas( result );
    canvas.drawBitmap( bitmap, 0, 0, paint );
    bitmap.recycle();

    for ( int i = 1; i < 8; i++ ) {
        paint.setColorFilter( new PorterDuffColorFilter( this.houseMatrix[i][1], PorterDuff.Mode.MULTIPLY ) );
        bitmap = BitmapFactory.decodeResource( this.getResources(), this.houseMatrix[i][0], opt );
        canvas.drawBitmap( bitmap, 0, 0, paint );
        bitmap.recycle();
    }

    this.house.setImageBitmap( result );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...