资源中的大图像出现异常

2024-02-24

我按照此链接中的示例操作:Android 中的 Viewpager 示例 http://androidtrainningcenter.blogspot.com/2012/10/viewpager-example-in-android.html

它工作正常,但是当我放置自己的高分辨率图像(大尺寸)时,它给了我例外:

java.lang.OutOfMemoryError:位图大小超出VM预算.

我发布了一个关于此问题的老问题,但它关闭了,因为它是重复的,我尝试并搜索了很多,最后我找到了解决方案:通过以下方式缩放图像以避免内存异常:

作者在 stackflow 和 android 开发网站上的建议和答案,我以下面的代码结束,它也以相同的异常结束,我认为我的代码中有一些错误,因为我仍在学习 java 和 android 开发,但这就是我可以结束的如有任何帮助或建议,我们将不胜感激,

thanks .

my code:

ViewPager适配器

  public class ViewPagerAdapter extends PagerAdapter {

Activity activity;
int imageArray[];

public ViewPagerAdapter(Activity act, int[] imgArra) {
    imageArray = imgArra;
    activity = act;
                           }

public int getCount() {
    return imageArray.length;
                        }

public Object instantiateItem(View collection, int position) {
    ImageView view = new ImageView(activity);
    view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT));
    view.setScaleType(ScaleType.FIT_XY);
    view.setBackgroundResource(imageArray[position]);
    ((ViewPager) collection).addView(view, 0);
    return view;
                              }

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
    ((ViewPager) arg0).removeView((View) arg2);
                              }

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == ((View) arg1);
                                     }

@Override
public Parcelable saveState() {
    return null;
                                       }
public static Bitmap decodeSampledBitmapFromResource(String imageArra,
        int reqWidth, int reqHeight) {      

        // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(imageArra, options);

 // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeFile(imageArra, options);
                                       }


    public static int calculateInSampleSize(
            BitmapFactory.Options options, int reqWidth, int reqHeight) {
    // Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {
        if (width > height) {
            inSampleSize = Math.round((float)height / (float)reqHeight);
        } else {
            inSampleSize = Math.round((float)width / (float)reqWidth);
                      }
                          }
    return inSampleSize;}}

页面指​​示器活动:

    public class PageIndicatorActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
    ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
    myPager.setAdapter(adapter);
    myPager.setCurrentItem(0);
                                 }

private int imageArra[] = { R.drawable.one, R.drawable.two,
        R.drawable.three, R.drawable.four,
        R.drawable.five, R.drawable.six,
        R.drawable.seven, R.drawable.eight,R.drawable.nine,
                          R.drawable.ten };  }

logcat堆栈 :

   FATAL EXCEPTION: main
     java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:563)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:439)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
at android.content.res.Resources.loadDrawable(Resources.java:1709)
at android.content.res.Resources.getDrawable(Resources.java:581)
at android.view.View.setBackgroundResource(View.java:7586)
at com.horizontalscrollviewwithpageindicator.ViewPagerAdapter.instantiateItem
        (ViewPagerAdapter.java:33)
at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:692)
at android.support.v4.view.ViewPager.populate(ViewPager.java:875)
at android.support.v4.view.ViewPager.populate(ViewPager.java:772)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1234)
at android.view.View.measure(View.java:8366)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
at android.view.View.measure(View.java:8366)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8366)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
at android.view.View.measure(View.java:8366)
at android.view.ViewRoot.performTraversals(ViewRoot.java:844)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)

尝试以下提示。

-Android 可以很好地配合.png图像,其中相同尺寸的图像 in .jpg格式创建一个OutOfMemoryError.

请参阅官方 Android 开发者网站的解决方案链接:

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

资源中的大图像出现异常 的相关文章

随机推荐

  • 使用多处理来查找网络路径

    我目前正在使用 networkx 函数 all simple paths 来查找网络 G 中给定的一组源节点和目标节点的所有路径 在更大 更密集的网络上 这个过程非常密集 我想知道是否可以使用多处理来解决这个问题 以及是否有人对如何通过创建
  • 嵌入式领域“软复位”和“硬复位”有什么区别?

    在我看来 软复位 从复位向量启动 硬重置 拉cpu的电平 硬复位当然意味着整个CPU芯片及其所有外设都被复位 造成这种情况的原因可能有很多 复位引脚被外部拉动 时钟故障 片上低电压检测 看门狗 非法指令陷阱等 软复位可能意味着返回复位向量的
  • 只要父文件夹中尚不存在任何文件,就将所有文件从“旧”文件夹移至父文件夹中

    只要父文件夹中尚不存在文件 我的代码就应将所有文件从 旧 文件夹移至父文件夹中 Folder 1 old somefiles 2 old somefiles 3 old somefiles Folder 1 somefiles old 2
  • 在elasticsearch中创建TransportClient时限制ThreadPool中的线程数

    我正在 elasticsearch 中创建一个 TransportClient 实例 下面是相同的代码 问题是我试图减少 TransportClient 启动的线程池生成的线程数 但无论我使用什么设置 我的elasticsearch总是用1
  • Delphi 按钮在 Aero 玻璃上显示白色边框

    我一直在尝试在 Delphi 2010 中使用 Aero 来找到一个好看的设计 人们看到的一个明显的用途是玻璃框架被扩展以包括屏幕底部的 确定 取消 按钮 我注意到 这在 Delphi 2010 中看起来不太正确 每个按钮周围都有一个白色边
  • 将字符串转换为 TextView

    String data tv 另外 在我的 xml 文件中 我有一个名为 tv1 的 TextView 我已经在 Activity 中投射了 textView TextView tv1 TextView findViewById R id
  • Windows 中的 msync 等效项

    Windows 中的 rsync unix 系统调用 相当于什么 我正在寻找 C C 空间中的 MSDN api 有关 msync 的更多信息 请访问http opengroup org onlinepubs 007908799 xsh m
  • 如何在 Android 的 SQLite 查询中使用 LIMIT 参数

    我正在尝试使用以下查询来获取按日期列出的最新结果 Cursor cursor mDb query DATABASE TABLE new String KEY DATE KEY REPS KEY WEIGHT null null null n
  • 从 ZIP 字符串中提取文件

    我有一个 BASE64 字符串的 zip 文件 其中包含一个 XML 文件 关于如何获取 XML 文件的内容而无需处理磁盘上的文件 有什么想法吗 我非常希望将整个过程保留在内存中 因为 XML 只有 1 5k 必须编写 zip 提取 XML
  • 查询优化——花费太长时间并停止服务器

    我的查询生成一些有关超速 上次时间和平均速度的报告 这是我的查询 Select r1 r2 name r2 notes r2 serial From SELECT k idgps unit MIN k dt AS DT Start MIN
  • 计算未排序数据中唯一对和非唯一对实例的数量

    我有以下形式的数据 ID ATTR 3 10 1 20 1 20 4 30 其中 ID 和 Attr 未排序并且可能包含重复项 ID的范围是1 20 000左右 ATTR是unsigned int 我可能需要一次处理 100 000 到 5
  • IE 的 toLocaleString 结果中有奇怪的字符

    我遇到了一个超级奇怪的事情 显然是 IE 特定的toLocaleString关于日期 在 IE 控制台窗口中 new Date 2014 08 28T20 51 09 9190106Z toLocaleString 8 28 2014 1
  • 无法重写prefersHomeIndicatorAutoHidden()方法

    我在 XCode 10 的应用程序中使用这行代码 以便调暗 iPhone X 和相关无边苹果设备上的主页指示灯 override func prefersHomeIndicatorAutoHidden gt Bool return true
  • 计算 Pandas 数据框中的不同单词数

    我有一个 Pandas 数据框 其中一列包含文本 我想获得整个列中出现的唯一单词的列表 空格是唯一的分割 import pandas as pd r1 My nickname is ft jgt Someone is going to my
  • 使用 JQuery 访问 ASP.net Web 服务时出错 - JSONP

    请查看下面的代码并帮助我找出我的网络服务代码中做错了什么 我想设置一个可以使用 JSONP 来使用的 asp net Web 服务 我在客户端使用 Jquery 来访问该网站 即使在设置了正确的属性之后 我的 Web 服务仍然会发出 xml
  • PHPExcel 字符串到时间

    我创建了一个 Excel 电子表格 在第二列中我有类似的值0 11 23 and 2 03 33 价值数千行 我使用 PHP 将格式设置为 sheet gt getStyle colRange gt getNumberFormat gt s
  • bash脚本中的mvn if语句

    我想在 bash 脚本中运行命令 mvn clean 但我想把它放在 if 语句中 如果 clean 无法正常运行 我想使用 echo 语句退出 bash 脚本 这是导致问题的代码 如果 mvn clean 然后 我尝试将 mvn clea
  • 取消内联剑道网格中的更新删除行

    我正在使用两个剑道内联网格父级和子级 子网格包含产品列表 当用户从子网格中选择产品 多项选择 并单击保存按钮时 它将插入到父网格中 子网格 var selectedIds var ctlGrid KendoWebDataGrid3 ctlG
  • 如何将精确短语与文本索引 Mongodb 中的动态字符串匹配?

    我有这个查询 db words find text search cake sale gives expected answer in robo3T Now my text搜索是动态的 const text cake sale db wor
  • 资源中的大图像出现异常

    我按照此链接中的示例操作 Android 中的 Viewpager 示例 http androidtrainningcenter blogspot com 2012 10 viewpager example in android html