小编Mey*_*ann的帖子

Android页面卷曲动画

  1. 是否有一种简单的方法来完成卷曲动画的卷曲页面?卷曲动画是页面翻动的动画,包括滚动上方的页面和下方页面上的阴影.
  2. 建立一个一次显示两个页面的"画廊"的推荐方法是什么(就像书一样)?

    是吗:

    1. 让适配器一次显示两个图像的线性布局?(它不会让我像一本书一样翻页翻页)
    2. 使用两个页面,以某种方式放置在另一个附近,然后在动画时间 - 移动接下来的两页?有什么更好的方法可以显示左页翻页?

android curl flip android-animation

58
推荐指数
2
解决办法
5万
查看次数

Android:OutofMemoryError:位图大小超过VM预算,没有理由我可以看到

我有一个OutOfMemory异常,画廊超过600x800像素JPEG.


环境

我一直在使用带有大约600x800像素的JPG图像的Gallery.

由于我的内容可能比图像更复杂,我将每个视图设置为一个RelativeLayout,它将JPView包装在ImageView中.

为了"加速"用户体验,我有一个4个插槽的简单缓存,预取(在一个looper中)左边有1个图像,1个图像右边显示图像并将它们保存在4槽HashMap中.

该平台

我使用的是256 RAM和128堆大小的AVD,屏幕为600x800.它也发生在Entourage Edge目标上,除了使用设备它更难调试.


问题

我一直在例外:

OutofMemoryError: bitmap size exceeds VM budget
Run Code Online (Sandbox Code Playgroud)

并且它在获取第五个图像时发生.我试图改变我的图像缓存的大小,它仍然是相同的.


奇怪的是:应该没有内存问题

为了确保堆限制远离我的需要,我在开始时定义了一个虚拟的8MB数组,并将其保留为未引用,以便立即调度.它是活动线程的成员,定义如下

static { @SuppressWarnings("unused")
byte dummy[] = new byte[ 8*1024*1024 ]; }    
Run Code Online (Sandbox Code Playgroud)

结果是堆大小接近11MB并且它们都是免费的. 注意我在它开始崩溃后添加了这个技巧.它使OutOfMemory不那么频繁.

现在,我正在使用DDMS.在崩溃之前(崩溃后变化不大),DDMS显示:

ID  Heap Size   Allocated   Free       %Used    #Objects
1   11.195 MB   2.428 MB    8.767 MB   21.69%   47,156  
Run Code Online (Sandbox Code Playgroud)

并在详细信息表中显示:

Type  Count  Total Size   Smallest   Largest   Median    Average
free  1,536  8.739MB      16B        7.750MB   24B       5.825KB
Run Code Online (Sandbox Code Playgroud)

最大的块是7.7MB.然而LogCat说:

ERROR/dalvikvm-heap(1923): 925200-byte external allocation too large for this process.
Run Code Online (Sandbox Code Playgroud)

如果你介意中位数和平均值之间的关系,可以假设大多数可用的块非常小.但是,有一个块足够大的位图,它是7.7M.怎么还不够呢?

注意:我记录了一个堆跟踪.在查看分配的数据量时,感觉不会超过2M.它确实与DDMS的可用内存报告相匹配. …

android gallery out-of-memory ddms imageview

34
推荐指数
2
解决办法
3万
查看次数

在Android中将ImageView添加到ScrollView时的冗余边距

我一直试图在单个ImageView上使用ScrollView,JPG(~770 x 1024),而AVD是600x800.

我的main.xml是:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
<ScrollView 
android:id="@+id/scroller"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

现在,我添加一个ImageView

setContentView(R.layout.main);
ScrollView sv = (ScrollView)findViewById( R.id.scroller );
ImageView iv = new ImageView(this);
iv.setImageDrawable( new BitmapDrawable( "/sdcard/770x1024.jpg" ) ); // same happens with ScaleDrawable.
iv.setScaleType( ScaleType.CENTER_INSIDE );
sv.addView( sv ); // and it does not go any better if I use Linear Layout between the ScrollView and the ImageView.
Run Code Online (Sandbox Code Playgroud)

结果是图像显示在ScrollView的中间,顶部和底部包含背景区域,如下所示:

     | } blank
     | }
Image|
.    |
.    :
. …
Run Code Online (Sandbox Code Playgroud)

android scrollview imageview

5
推荐指数
2
解决办法
4465
查看次数

Kotlin:一个返回"this"的默认设置器

我知道这不是"严格按照设计模式"等等等等,但......

在Kotlin中,有没有办法创建一个返回" this" 的"default-ish"setter ,就像

var foo:Bar = Something()
    set(f:Bar) {
       foo = f
       return this // Alas, that would not compile because Setter returns Unit
    }
Run Code Online (Sandbox Code Playgroud)

当setter返回时非常方便this,因为可以在不必声明Builder的情况下制作Builder模式.它只是做得更短:

BlahBlah().setFoo(x).setFoo2(y)...
Run Code Online (Sandbox Code Playgroud)

BlahBlah.Builder().setFoo(x)....
Run Code Online (Sandbox Code Playgroud)

要么

var b = BlahBlah()
b.setFoo(x)
b.setFoo2(y)
...
Run Code Online (Sandbox Code Playgroud)

管他呢

此外,如果一个二传手Unit还是回来,为什么不this呢?

setter return properties this kotlin

3
推荐指数
1
解决办法
1154
查看次数