Calendar」の20日目の記事です。「みんコミ」のAndroidアプリ(バージョン1.0.3)をベースに執筆しています。Store」からアプリをインストールしておくことをお勧めします。Acceleration)が適用されない。Viewを実装することが適切である。SurfaceView「みんコミ」アプリのコミックビューアーには現在SurfaceViewが使われていると理解しています。最初のページで端末を横向きにして画面を回転させる。ページを拡大ページを縮小すると、次のように描画にノイズが入るんですね。再描画時にCanvasがリセットされないのはSurfaceViewの特徴なので、きっとSurfaceViewを使っているのだろうと判断しました。1ページ指摘した現象自体は簡単に解決できます。描画の最初にCavnasにdrawColorしてキャンバスを一度塗りつぶしてやれば良いだけです。今回は、表題の通り「SurfaceViewを使ってはいけない」という話です。SurfaceView、使いますよね。コミックの大きな画像を滑らかに拡大縮小・スクロールしたいわけですから、普通は実装するときに「SurfaceView」を選択すると思います(もし違っていたらごめんなさい)。SurfaceViewをつかってはいけないSurfaceViewが速かったのは過去の話です。こんなこと言ってごめんね。4.0以降で標準で有効になっている「ハードウェアアクセラレーション」による描画支援を「View」は受けられますが、「SurfaceView」は受けられません。accelerationすると、SurfaceViewで描画すると逆にViewより遅くなってしまうのです。追記]ベンチマークの条件を追記しました。1,989,301.12その差「10倍」以上です。僕たちが速度を求めて選んでいたSurfaceViewは、実はViewよりも遙かに遅いのです。APIからはプレビューにも使えません。それが今のSurfaceViewなんです。なんでまだdeprecatedじゃないんでしょうか。一応、SurfaceViewの使いどころみたいなのを挙げるのであれば......例えば、サーバーから非同期にダウンロードするデータを描画していきたい場合でしょうか。Responding)が発生してしまうことが予想されます。追記]そういう時にはTextureViewですね。TakeshiTextureViewのベンチマークも掲載しておきます。単純なBitmapの描画であればやはりViewの方が速いです。518,378.38Googleはもっと積極的に「SurfaceViewは使うな。Viewの方が速い」とアピールすべきだと思います。ないと、SurfaceViewを使って速度が上がらず呻く開発者がこれからも出続けるでしょう。パフォーマンステスト(DrawPerformanceActivity)を含めたコードをGitHubに置いておきます。参考になれば幸いです。https://github.com/keiji/adventcalendar_2015_mincomi「有山圭二」は「みんなのコミック」及び運営の「株式会社イーブックイニシアティブジャパン」とは一切関係がありません。本アドベントカレンダーの内容はあくまで参加者個人の見解です。「みんなのコミック」の評価を目的とするものではありませんので、ご了承下さい。みんコミといえば、僕が普段からお世話になっている根雪れい(@neyuki_rei)さんも連載していますね!おかあさん(10)と僕。根雪れい.おかあさん(10)と僕。2015人間以外にしか好かれない男の子が主人公です。ヒロインの「こまこ」の仕草が可愛いです。二話目になると単純に使い捨ての悪者かと思っていたキャラクターが再登場したり、最後には「これからストーリーが動き出すぞ」と、感じさせる引きがあったりと構成が上手いなぁと思います。あ、眼鏡っ娘は出ません。それでは明日21日の担当は、ずっとSurfaceViewを信じてきたのに裏切られた気分の「有山圭二」さんです。