【问题标题】:Android Animation in ImageView is stretched verticallyImageView中的Android动画被垂直拉伸
【发布时间】:2011-09-14 09:49:43
【问题描述】:

当我使用 ImageView 显示这样的 png 图像时,一切看起来都很完美:

<ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/png_picture"
     android:src="@drawable/paos_connection"/>

图像完美缩放,水平填充屏幕并具有正确的纵横比。

现在,我想用动画替换图像。我决定使用帧动画,如下所示:http://developer.android.com/guide/topics/graphics/view-animation.html。我正在使用相同大小的 png 文件(原始文件的略微修改的副本)。

我的问题是动画正在播放并且它像以前一样水平填充屏幕,但现在它被垂直拉伸了。我可以通过硬编码高度来强制它具有正确的高度:

<ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="210px" 
     android:id="@+id/animation" />

...但显然这不是一个好的解决方案,因为图像在所有屏幕尺寸上都应该具有正确的纵横比。

【问题讨论】:

    标签: android android-layout android-animation


    【解决方案1】:

    这可能会有所帮助。我发现没有很多步法,除非在初始化时按照其余布局顺序绘制图像,否则您将无法使用固定元素。

    http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

    一个快速尝试的方法是在其位置设置一个透明图像,其尺寸与动画图像相同。使用渲染透明图像的宽度和高度以编程方式创建 ImageView。之后,为实例化的图像设置动画。

    【讨论】:

    • 感谢您的回复。我在这个方向上尝试了几件事,但我不确定我完全了解您希望我如何做到这一点。
    • 我尝试为我以编程方式设置动画背景的同一个 ImageView 为“android:src”设置一个具有相同尺寸的透明图像。不幸的是,背景仍然被拉伸。 :-( 我也尝试使用addView(my_new_image_view, width, height) 向同一个LinearLayout 添加一个单独的视图,但是我没有看到任何动画。我没有按照你的建议做吗?
    【解决方案2】:

    不是在imageview的背景中设置动画drawable,而是使用src将它设置在前台,让动画在那里播放。如果您为 imageview 设置了合适的缩放类型,帧动画中的所有图像都将按照完整的纵横比调整大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多