2014-12-13 66 views
0

这是我的Android代码片段,它有一个图像。 我的问题是,当我选择一个片段有一些android版本中的图像强制关闭。 请帮助e解决问题。哪些是我需要切片我的psd的决议?

的Java

import com.imagezoom.ImageAttacher; 
    import com.imagezoom.ImageAttacher.OnMatrixChangedListener; 
    import com.imagezoom.ImageAttacher.OnPhotoTapListener; 

    import info.paarva.CrescentBuilders.R; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ImageView; 
    import android.app.Fragment; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.graphics.RectF; 

    public class FragmentTab2 extends Fragment { 
     ImageView mImaView; 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.frag_tulip_locationmap, container, false); 


      mImaView = (ImageView) rootView.findViewById(R.id.locationmap_tulip); 

      Bitmap bimtBitmap = BitmapFactory.decodeResource(getResources(), 
        R.drawable.tulip_locationmap); 
      mImaView.setImageBitmap(bimtBitmap); 

      /** 
      * Use Simple ImageView 
      */ 
      usingSimpleImage(mImaView); 
      return rootView; 
     } 

     public void usingSimpleImage(ImageView imageView) { 
      ImageAttacher mAttacher = new ImageAttacher(imageView); 
      ImageAttacher.MAX_ZOOM = 2.0f; // Double the current Size 
      ImageAttacher.MIN_ZOOM = 1.0f; // Half the current Size 
      MatrixChangeListener mMaListener = new MatrixChangeListener(); 
      mAttacher.setOnMatrixChangeListener(mMaListener); 
      PhotoTapListener mPhotoTap = new PhotoTapListener(); 
      mAttacher.setOnPhotoTapListener(mPhotoTap); 
     } 

     private class PhotoTapListener implements OnPhotoTapListener { 

      @Override 
      public void onPhotoTap(View view, float x, float y) { 
      } 
     } 

     private class MatrixChangeListener implements OnMatrixChangedListener { 

      @Override 
      public void onMatrixChanged(RectF rect) { 

      } 
     } 

    } 

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context=".locationmap_tulip" 
    android:background="@color/textclr_actnbar" 
     > 
<ImageView 
     android:id="@+id/locationmap_tulip" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 

     android:src="@drawable/tulip_locationmap" /> 



</RelativeLayout> 

logcat的

12-13 06:54:11.792: W/dalvikvm(1417): threadid=1: thread exiting with uncaught exception (group=0xa4ca7b20) 
12-13 06:54:11.800: E/AndroidRuntime(1417): FATAL EXCEPTION: main 
12-13 06:54:11.800: E/AndroidRuntime(1417): Process: info.paarva.CrescentBuilders, PID: 1417 
12-13 06:54:11.800: E/AndroidRuntime(1417): java.lang.OutOfMemoryError 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:452) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:482) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at Tulip.FragmentTab2.onCreateView(FragmentTab2.java:29) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.Fragment.performCreateView(Fragment.java:1700) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.BackStackRecord.run(BackStackRecord.java:684) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.os.Handler.handleCallback(Handler.java:733) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.os.Handler.dispatchMessage(Handler.java:95) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.os.Looper.loop(Looper.java:136) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at android.app.ActivityThread.main(ActivityThread.java:5001) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at java.lang.reflect.Method.invoke(Method.java:515) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
12-13 06:54:11.800: E/AndroidRuntime(1417):  at dalvik.system.NativeStart.main(Native Method) 
12-13 06:59:11.828: I/Process(1417): Sending signal. PID: 1417 SIG: 9 
12-13 06:59:12.196: D/dalvikvm(1468): GC_FOR_ALLOC freed 93K, 4% free 3765K/3920K, paused 6ms, total 7ms 
12-13 06:59:12.212: D/dalvikvm(1468): GC_FOR_ALLOC freed 2K, 4% free 3983K/4144K, paused 12ms, total 12ms 
12-13 06:59:12.228: I/dalvikvm-heap(1468): Grow heap (frag case) to 6.366MB for 2536932-byte allocation 
+0

尝试添加此属性:android:largeHeap =“true”为AndroidManifest.xml中的 2014-12-13 07:13:32

+0

减少强制关闭的机会减少,但在某些情况下,强制再次关闭。 – Ashfaq 2014-12-13 07:19:37

回答

1

它关闭,您所看到的,因为它是银行经营内存不足。如果您控制此图像的分辨率,请勿使其大于现有的最高分辨率手机(2,560 x 1,440)。但要考虑到较低分辨率的设备,绝大多数仍在实施the Android docs for handling large bitmaps中的建议。他们的基本技术是首先检查位图的尺寸,然后根据设备屏幕尺寸进行缩放,以便只有可显示的像素保存在内存中。

相关问题