में 32 बिट से अधिक है यह Mysterious stacktrace in Android developer console (bitmap size exceeds 32bits)एंड्रॉयड: बिटमैप आकार DialogFragment
यही सवाल का डुप्लिकेट कोड की एक पंक्ति प्रदान नहीं किया नहीं है और वहाँ कोई जवाब नहीं है या तो; इसके अलावा, मुझे यह त्रुटि मिलती है भले ही मैं बिटमैप आकार 32x32 पर सेट करता हूं, यह केवल बिटमैप है, इसलिए यह स्मृति से संबंधित नहीं है।
मैं
- कर एक imageView के आकार जाओ,
- एक बिटमैप
- बना सकते हैं और एक कैनवास पर कुछ बना करना चाहते हैं क्या।
बिटमैप imageView के आकार के लिए और इसलिए Log.e
उत्पादन होता है:
Width: 272
Height: 136
क्या
नीचे कोड Nexus4, Nexus7 और Desire HD पर अच्छी तरह से काम होता है (CM10) , लेकिन एमुलेटर पर ऐप चलाने से मुझे नीचे दिखाए गए त्रुटि (एपीआई 8) मिलती है।
निष्कर्ष
मैं आधे आकार और 32x32, जो एक ही त्रुटि देता है के साथ यह कोशिश की है।
मैं छवि दृश्य को एक संवादप्रवाह में प्रदर्शित कर रहा हूं (एक्शनबारशेलॉक/एपीआई 8 के लिए होलोवेरीवेयर), शायद यह अपराधी है?
imageView:
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="12dp"
android:layout_marginTop="12dp" />
मेरी गतिविधि में:
iv = (ImageView) view.findViewById(R.id.imageView1);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (!waveFormMeasured) {
if (iv.getMeasuredWidth() > 1) {
width = iv.getMeasuredWidth();
Log.e(TAG, "Width: " + width + " Height: " + width/2);
waveBitmap = Bitmap.createBitmap((int) width, (int) ((int) width/2), Config.RGB_565);
Log.e(TAG, "Bitmap created");
waveCanvas = new Canvas(waveBitmap);
Log.e(TAG, "Bitmap set to Canvas");
iv.getLayoutParams().height = width/2;
Log.e(TAG, "ImageView Height changed");
iv.setImageBitmap(waveBitmap);
Log.e(TAG, "Bitmap set to ImageView");
drawWaveForm(true);
Log.e(TAG, "WaveForm drawn");
waveFormMeasured = true;
}
}
return true;
}
});
यहाँ क्या गलत है?
02-21 17:12:48.301: E/Drummers(375): Width: 272 Height: 136
02-21 17:12:48.301: E/Drummers(375): Bitmap created
02-21 17:12:48.301: E/Drummers(375): Bitmap set to Canvas
02-21 17:12:48.301: E/Drummers(375): ImageView Height changed
02-21 17:12:48.301: E/Drummers(375): Bitmap set to ImageView
02-21 17:12:48.623: E/Drummers(375): WaveForm drawn
02-21 17:12:48.842: E/AndroidRuntime(375): FATAL EXCEPTION: main
02-21 17:12:48.842: E/AndroidRuntime(375): java.lang.IllegalArgumentException: bitmap size exceeds 32bits
02-21 17:12:48.842: E/AndroidRuntime(375): at android.graphics.Bitmap.nativeCreate(Native Method)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.View.buildDrawingCache(View.java:6577)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1259)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.drawChild(ViewGroup.java:1505)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.View.draw(View.java:6883)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.View.draw(View.java:6986)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.widget.ScrollView.draw(ScrollView.java:1409)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.View.buildDrawingCache(View.java:6640)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1259)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.drawChild(ViewGroup.java:1505)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.View.draw(View.java:6883)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-21 17:12:48.842: E/AndroidRuntime(375): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewRoot.draw(ViewRoot.java:1522)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.os.Looper.loop(Looper.java:123)
02-21 17:12:48.842: E/AndroidRuntime(375): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-21 17:12:48.842: E/AndroidRuntime(375): at java.lang.reflect.Method.invokeNative(Native Method)
02-21 17:12:48.842: E/AndroidRuntime(375): at java.lang.reflect.Method.invoke(Method.java:507)
02-21 17:12:48.842: E/AndroidRuntime(375): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-21 17:12:48.842: E/AndroidRuntime(375): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-21 17:12:48.842: E/AndroidRuntime(375): at dalvik.system.NativeStart.main(Native Method)
क्या आपको समाधान, या यहां तक कि इस अपवाद का कारण भी मिला? –
स्टैक ट्रेस से पता चलता है कि क्रैश 'waveBitmap' पर नहीं है, बल्कि एनीमेशन के कारण' buildDrawingCache() 'को कॉल करना प्रारंभ होता है। –