2012-07-26 77 views
1

在我的应用程序使用54 images.in以支持多屏幕,我创建文件夹,这样如何减小应用程序的大小?

drawable-hdpi 
drawable-mdpi 
drawable-xdpi 
drawable-mdpi 

,并在每个folder.due的所有图像粘贴到该应用程序的大小增加了很多。 ... 然后我尝试喜欢这种方式... 只带一个文件夹绘制保留所有54图像,删除所有drawabl-mdpi,drawable-hdpi,drawable-mdpi和drawable-xdpi文件夹。 在我的清单文件我mensioned为

"<supports-screens 
android:anyDensity="true" 
android:largeScreens="true" 
android:normalScreens="true" 
android:resizeable="true" 
android:smallScreens="true" />" 

,但它给我的错误,这样

07-25 15:04:25.928: ERROR/dalvikvm-heap(13963): 2764800-byte external allocation too large for this process. 
07-25 15:04:25.928: ERROR/GraphicsJNI(13963): VM won't let us allocate 2764800 bytes 
07-25 15:04:25.928: DEBUG/AndroidRuntime(13963): Shutting down VM 
07-25 15:04:25.928: WARN/dalvikvm(13963): threadid=1: thread exiting with uncaught exception (group=0x4001d7e0) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): FATAL EXCEPTION: main 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jacksonville.alenseventapp/com.jacksonville.alenseventapp.HomeActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.os.Looper.loop(Looper.java:123) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at dalvik.system.NativeStart.main(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.Activity.setContentView(Activity.java:1647) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.jacksonville.alenseventapp.HomeActivity.onCreate(HomeActivity.java:12) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  ... 11 more 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: java.lang.reflect.InvocationTargetException 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.widget.LinearLayout.<init>(LinearLayout.java:115) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Constructor.constructNative(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  ... 21 more 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.nativeCreate(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.createBitmap(Bitmap.java:468) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.createBitmap(Bitmap.java:435) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.content.res.Resources.loadDrawable(Resources.java:1709) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.View.<init>(View.java:1885) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.View.<init>(View.java:1834) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.ViewGroup.<init>(ViewGroup.java:285) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  ... 25 more 

,如果任何机构知道这件事plz帮助我...

回答

3

,我们在您的应用程序由于本教程主要四大误区

java.lang.RuntimeException: Unable to start activity 
    **ComponentInfo{com.jacksonville.alenseventapp/com. 
    jacksonville.alenseventapp.HomeActivity}: 

** android.view.InflateException: Binary XML file line #1: 
     Error inflating class <unknown> 
     07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
     and 07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: 
     android.view.InflateException: Binary XML file line #1: 
     Error inflating class <unknown> 

这两个错误提示,你指的是不存在 一个包,这可能是你跟着做这个代码, 你用那个代码的包名称在你的应用程序中

和第三个错误

07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: 
java.lang.reflect.InvocationTargetException 

看到这些问题,也有同样的问题

How to remove this error ? java.lang.reflect.InvocationTargetException

InvocationTargetException on inflating an xml - android

,也看到这个

http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html

,它由b引起的内存eing低

Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

避免这一点,你可以用这个方法来显示

// here path is from where you are picking the image 



Bitmap myBitmap = ShrinkBitmap(Path, 300, 300); 

MyImageView.setImageBitmap(myBitmap); 


private Bitmap ShrinkBitmap(String file, int width, int height) { 
     // TODO Auto-generated method stub 
     BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); 
     bmpFactoryOptions.inJustDecodeBounds = true; 
     Bitmap bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions); 

     int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)height); 
     int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)width); 

     if (heightRatio > 1 || widthRatio > 1) 
     { 
     if (heightRatio > widthRatio) 
     { 
      bmpFactoryOptions.inSampleSize = heightRatio; 
     } else { 
      bmpFactoryOptions.inSampleSize = widthRatio; 
     } 
     } 

     bmpFactoryOptions.inJustDecodeBounds = false; 
     bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions); 
    return bitmap; 
    } 
+0

绘制,华电国际 绘制,MDPI 绘制-xdpi 绘制,MDPI,如果我按照这个方法,我DONOT得到任何错误,但问题是apk的大小是接近8MB – Venkat 2012-07-26 06:56:39

+0

“问题是apk大小接近8mb”有什么问题int – 2012-07-26 06:59:37

+0

venkat应用程序可能需要一段时间才能安装,但一旦安装它的处理将罚款 – 2012-07-26 07:14:53