wild_swift (wild_swift) wrote,
wild_swift
wild_swift

Лирическое отступление об Android

Как всегда инженеры Google жгут. В Android 3.0 Google полностью переделал систему рендеринга и добавили параметр hardwareAccelerated, который включает поддержку графического ускорителя, тем самым позволяя графике рисоваться быстрее, но в результате наблюдается забавный эффект. При включении hardwareAccelerated до версии 4.х перестали работать функции:



  • Canvas.clipPath
  • Canvas.clipRegion
  • Canvas.drawPicture
  • Canvas.drawPoints
  • Canvas.drawPosText
  • Canvas.drawTextOnPath
  • Canvas.drawVertices
  • Paint.setLinearText
  • Paint.setMaskFilter
  • Paint.setRasterizer


И ладно бы они пометили их как Depricated, или кидали Exception по этому поводу, так нет же. Никакой подсказки разработчикам кроме записи в блоге, что оно так работает.


А теперь хинт. Если ваш компонент при отрисовке использует указанные выше методы, то для обеспечения нормальной работы на всех устройствах рекомендуется при создании исполнить следующий код.


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB && 
    Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
    setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
Tags: android
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments