2016-11-28 47 views
7

私はUbuntu 16.04を使用しています。私はエミュレータで自分のアプリケーションを実行しようとするとAndroid Studioの上で、私は次のエラーを取得する:Android Studio Canvas:大きすぎるビットマップを描画する

FATAL EXCEPTION: main Process: project name here, PID: 2528 java.lang.RuntimeException: Canvas: trying to draw too large(216090000bytes) bitmap. at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260) at android.graphics.Canvas.drawBitmap(Canvas.java:1415) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:528) at android.widget.ImageView.onDraw(ImageView.java:1316) at android.view.View.draw(View.java:17185) at android.view.View.updateDisplayListIfDirty(View.java:16167) at android.view.View.draw(View.java:16951) at android.view.ViewGroup.drawChild(ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) at android.view.View.updateDisplayListIfDirty(View.java:16162) at android.view.View.draw(View.java:16951) at android.view.ViewGroup.drawChild(ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) at
etc...

は、私はそうSYM-リンクを作成するために必要な、私のエミュレータは、しかし、作業を取得するためにいくつかのフープを介して実行する必要がありましたAMD上でエミュレータを実行できます。これが問題の一部であるかどうかは不明です。そして私の人生のために、なぜそれがこれを続けているのか理解できません。私のグループには、同じエミュレートされた電話とSDKでプロジェクトをエミュレートする人がいます。

SOLUTION

は、問題は、我々は一度に我々のアプリ上で使用される主な画像でしたが判明します。画像の実際のサイズが大きすぎるため、圧縮しました。その後、それは魅力のように働いて、品質の損失はなく、アプリケーションはエミュレータ上で正常に動作しました。

+0

あなたは 'BitmapOption.inSampleSize'を使ってより小さなサイズでビットマップを読み込もうとしましたか? –

+0

このhttps://developer.android.com/training/displaying-bitmaps/load-bitmap.html –

+1

**を使用してビットマップをサンプリングしてください**私のケースでは、(高解像度)スプラッシュビットマップをdrawableからdrawable-xxhdpiに移動していました解決策** 私は同じ問題を抱えていました。私は、アプリケーションが起動したときに表示されるので、私のスプラッシュ画面が問題であるとは思わなかったが、スプラッシュ画面が問題であることが判明した。 私の場合のスプラッシュ画面にはxxhdpiの解像度があり、誤ってdrawable-xxhdpiの代わりにdrawableフォルダに配置されていました。これにより、Androidはスプラッシュ画面にmdpi解像度があり、必要なサイズの3倍の3倍に拡大縮小し、ビットマップを作成しようとしていました。 –

答えて

39
(高解像度)で 引き出し可能 に描画可能xxhdpiをあなたのイメージを移動し

。しかし、アプリケーション開発では、APKファイルサイズを大きくするためにイメージを大きくする必要はありません。

+2

ありがとう!それは動作します。 – user2137020

+1

これは受け入れられる回答でなければなりません –

+2

私のイメージがわずか500kbであったのに、それはまた働きましたが、解像度が高すぎました。 – ashishdhiman2007

1

この問題は、当時私たちのアプリで使用していた主なイメージであることが分かりました。画像の実際のサイズが大きすぎるため、圧縮しました。その後、それは魅力のように働いて、品質の損失はなく、アプリケーションはエミュレータ上で正常に動作しました。

3

私のケースでは、drawableからdrawable-xxhdpiに(高解像度)スプラッシュビットマップを移動することが解決策でした。

私は同じ問題がありました。私は、アプリケーションが起動したときに表示されるので、私のスプラッシュ画面が問題であるとは思わなかったが、スプラッシュ画面が問題であることが判明した。

私の場合のスプラッシュ画面にはxxhdpiの解像度があり、誤ってdrawable-xxhdpiの代わりにdrawableフォルダに配置されていました。これにより、Androidはスプラッシュ画面にmdpi解像度があり、必要なサイズの3倍の3倍に拡大縮小し、ビットマップを作成しようとしていました。

関連する問題