日韩精品中文字幕一区二区-日韩精品中文字幕一区-日韩精品中文字幕视频-日韩精品在线一区二区三区-第一页在线-第一福利视频

當前位置:首頁文章首頁 IT學院 IT技術

Android 4.0硬件加速及繪制技巧

作者:  來源:  發布時間:2012-2-16 11:43:23  點擊:
  3.2.3 兼容性:使用軟件層類型會強制使一個view在軟件中被渲染。如果一個view是硬件加速的話(比如你設置整個應用程序是硬件加速的話),同時有渲染的問題,這是一種很簡單的方式來限制硬件繪制流程。

  3.3 View的層和動畫的關系

  當你的應用程序已經使用了硬件加速的話,硬件層能夠帶來更為快速和更為平滑的動畫效果。當對一個復雜的View進行動畫操作時,因為要進行很多的畫操作,所以并不可能總是能達到60幀每秒。在這種情況下可以通過硬件層來渲染為硬件紋理來提高性能。硬件紋理操作可以用作對一個view進行動畫操作,當進行動畫的時候可以減少對View自身頻繁的重繪。除非你改變這個view的屬性(調用invalidate()方法)或者你手動的調用invalidate()。如果在你的應用中運行一個動畫,但是并沒有得到你想要的平滑效果,可以考慮為你要動畫的view開啟硬件層。

  當一個View通過硬件層返回時,當所有的層疊加后最終的畫面顯示在屏幕時,View一些屬性會被同時被處理。設置這些屬性是十分有效率的,因為他們不需要View去invalidate和重繪。如下的屬性將影響層的疊加,設置這些屬性將會使View自動請求刷新,而且不需要對View進行重繪。

  ◆alpha: 改變層的透明度。

  ◆x, y, translationX, translationY: 改變層的位置

  ◆scaleX, scaleY: 改變層的大小

  ◆rotation, rotationX, rotationY:在3D空間內改變層的方向

  ◆pivotX, pivotY: 指定它進行變形的原點位置

  這些屬性是通過ObjectAnimator對象對一個view進行動畫操作時所使用的,如果你想訪問這些屬性,直接調用這些屬性的setter或者getter方法,例如想改變View的alpha則直接調用setAlpha()。如下的代碼片段顯示了一個View通過Y軸進行3D旋轉。

  view.setLayerType(View.LAYER_TYPE_HARDWARE, null); ObjectAnimator.ofFloat(view, "rotationY", 180).start();

  因為硬件層會消耗視頻的內存,強烈的推薦你在作動畫的時候啟用他們,當動畫完成了之后禁用他們,你可以通過動畫監聽來完成這些。代碼如下:

  View.setLayerType(View.LAYER_TYPE_HARDWARE, null); ObjectAnimator animator= ObjectAnimator.ofFloat(view, "rotationY", 180); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { view.setLayerType(View.LAYER_TYPE_NONE, null); } }); animator.start();

  Android 4.0提示和技巧

  切換到硬件加速2D圖形可以立即增強表現,但是你還是需要通過如下的建議來設計你的應用程序來更有效率的使用GPU。

  4.1 減少你程序中使用View的數量

  你系統中畫的view的數量越多,你的程序就會越慢,在軟件繪制的流程也是一樣的,減少view的數量是優化你UI的一個最簡單的方法。

  4.2 避免過多繪制

  不要過多的疊加層,當一個View被其他view完全遮擋住了的話,最好把被遮擋的view移除掉。如果你需要繪制不同的層做一個疊加效果的話,考慮把這些層合并為一個層。就現在的硬件來看,有一個好的經驗就是動畫的每幀不要繪制多余屏幕像素2.5倍的像素數量(bimap中的透明像素也計算在內)。

  4.3 不要在繪制的方法中創建繪制對象

  一個常見的錯誤就是當繪制方法被調用的時候,每次都要創建一個新的Paint或者Path。這將迫使垃圾回收器過于頻繁的運行,這將對緩沖和硬件的繪制造成影響。

  4.4 不要過于頻繁的修改形狀

  以復雜的shapes,path和旋轉為例,這些繪制都會用到紋理的遮罩。每當你創建或者修改一個path,硬件渲染過程都會創建一個新的遮罩,這耗費的代價是相當大的。

  4.5 不要過于頻繁的修改bitmap

  每當修改一次bitmap的內容,當你下次再繪制它的時候都會以GPU的紋理形式上傳一次。

  4.6 要小心使用alpha通道

  當你使用setAlpha ,AlphaAnimation或者ObjectAnimator設置一個View的透明效果時。它將需要2倍離屏的渲染緩沖填充率,當應用一個alpha到一個大的View上的時候,考慮設置view 層的類型為LAYER_TYPE_HARDWARE。

相關軟件

相關文章

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
主站蜘蛛池模板: infrustructure| 生物中考真题试卷(含答案)| 行政职业能力测试2024题库及答案| 我和我的祖国教案| 女同恋性吃奶舌吻完整版| 滑胎最凶的食物孕早期| 六字真言颂怙主三宝| 洪熙官演员表| 财税2010121号原文| 日本女人性生活视频| 下截抖音| 伺机偏宠短剧免费观看| 荒岛爱情免费完整版在线观看高清| 女友电影| 稻草人三年级课外阅读| 我记得你| 什么是实现碳达峰碳中和目标的基础路径 | 恶魔女忍者| 我的年轻小姨电视剧免费观看高清| 坏孩子电影| 中长发图片2024最新款女| 本田莉子| 云月之恋简谱| 吴彦姝演过的电视剧大全| 《生命中有你》赞美诗歌| 布莱德·德尔森| 媚狐传| 又见阿郎电视剧免费观看| 傻少爷大结局| 黑暗森林 电影| 劳力士电话客服电话24小时| 鬼迷心窍1994| 刘洋男演员| 180复古星王合击| 布莱德·德尔森| 心跳源计划演员表| 娟子演的所有电视剧| 抖音最火的图片| 董三毛| 大雄的恐龙| 乔军|