2013-09-03 12 views
7

यह मेरे व्यूअरजर के लिए सरणी में मेरा ड्रायबल है, जब मैं इसे चलाता हूं, तो मुझे स्मृति त्रुटि से बाहर निकलता है, क्या छवि आकार या आदि को कम करने का कोई तरीका है? मैंएंड्रॉइड आउटॉफमेमरी ड्रायबल

GalImages = new int[] { R.drawable.tutorials_01_android_en,R.drawable.tutorials_02_android_en,R.drawable.tutorials_03_android_en,R.drawable.tutorials_04};break 

@Override 
public Object instantiateItem(ViewGroup container, int position) { 

    ImageView imageView = new ImageView(context); 
    final int temp = position; 
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    imageView.setImageResource(GalImages[position]); 

    ((ViewPager) container).addView(imageView, 0); 
    imageView.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) {} 
    }); 
    return imageView; 
} 
+0

इस प्रश्न को यहां देखें। http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object – nedaRM

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है, क्या आपको कोई समाधान मिला? –

उत्तर

16

यह एक known bug, इसकी नहीं है क्योंकि बड़ी फ़ाइलों की खोज के बहुत सारे है, लेकिन मैं के रूप में अच्छी उनका उपयोग नहीं कर सकते हैं .. कृपया मदद ...। चूंकि एंड्रॉइड कैच ड्रॉबल्स कैश करता है, यह कुछ छवियों का उपयोग करने के बाद स्मृति से बाहर जा रहा है। लेकिन मुझे एंड्रॉइड डिफ़ॉल्ट कैश सिस्टम को छोड़कर, इसके लिए वैकल्पिक तरीका मिला।

soultion: आस्तियों में एक drawable फ़ोल्डर बनाएँ और परिसंपत्तियों में छवियों "drawable" फ़ोल्डर ले जाने और निम्न फ़ंक्शन का उपयोग BitmapDrawable

public static Drawable getAssetImage(Context context, String filename) throws IOException { 
    AssetManager assets = context.getResources().getAssets(); 
    InputStream buffer = new BufferedInputStream((assets.open("drawable/" + filename + ".png"))); 
    Bitmap bitmap = BitmapFactory.decodeStream(buffer); 
    return new BitmapDrawable(context.getResources(), bitmap); 
} 

Refrence पाने के लिए: https://stackoverflow.com/posts/6116316/revisions

इसके अलावा कि अपनी मेनिफेस्ट फ़ाइल

android:largeHeap="true" 
में
से नीचे की रेखा जोड़ें
+5

एंड्रॉइड के साथ इस तरह के मुद्दे को हल न करें: bigHeap = "true", यह कोई समाधान नहीं है –

11

अपने ड्रायबल्स को निम्न एमपीआई से एचडीपीआई तक या अपने रिज़ॉल्यूशन के आधार पर एक्सएचडीपीआई जैसे उच्च आयाम फ़ोल्डरों को ले जाने का प्रयास करें।

मेरी छवियों के आयाम 400-800 पिक्सेल से लेकर थे। मैंने एमडीपीआई में अपने ड्रॉबल्स को संग्रहीत किया जो मेरे गैलेक्सी एस 4 पर आउटऑफमेमरी फेंक रहा था। मैं उन्हें एचडीपीआई में ले गया और यह समस्या हल हो गई।

+1

मैं लगभग इस बात पर विश्वास नहीं कर सकता कि इस तरह की एक सरल समस्या हल हो गई है जो मैं तुरंत कर रहा था। धन्यवाद! –

2

जैसा कि मुहम्मद ने उल्लेख किया है, अपनी छवियों को में खींचने योग्य (या एमडीपीआई) को एचडीपीआई या उच्चतर के रूप में एक अलग आयाम फ़ोल्डर में ले जाने का प्रयास करें।

हमेशा तक संपीड़ित पीएनजी का उपयोग करने का प्रयास करें। ऐसी कई ऑनलाइन साइटें हैं जिन्हें आप उन्हें बहुत बड़े पैमाने पर संपीड़ित कर सकते हैं।

संदर्भ: http://developer.android.com/guide/practices/screens_support.html

2

जब तक आपके चित्रों का आकार बहुत बड़ा नहीं हैं, तो आप अपने PNG का के लिए drawable-nodpi फ़ोल्डर का उपयोग कर सकते हैं। मैं इस मुद्दे को हल करने की पुष्टि कर सकता हूं।

0

अपनी मेनिफेस्ट फ़ाइल में android:largeHeap:"true" जोड़ें और अपनी खींच योग्य छवियों को फ़ोल्डर mipmap-hopi पर ले जाएं।

[एंड्रॉइड] [जावा] [एंड्रॉइड-स्टूडियो]

संबंधित मुद्दे