【问题标题】:Preventing scale on bitmap created in execution time for ImageView - Android防止在 ImageView 执行时创建的位图缩放 - Android
【发布时间】:2010-09-23 16:42:22
【问题描述】:

我有一个 ImageView 作为 webview 顶部的顶部横幅。此横幅的图像是在执行时间创建的,具体取决于设备的分辨率。对于每个分辨率,横幅的高度始终相同。唯一改变的是宽度,它根据方向而变化。但是,由于宽度和高度没有变化,我最终得到了 2 张不同比例的图像。这就是缩小/放大对我来说不起作用的方式。

另一个问题是,每次用户旋转屏幕时,都会再次创建横幅图像,但 Android 似乎没有更新图像,因此我的横幅缺少部分内容。

我想拥有一个适合横向和纵向的真正大图像。但这似乎不是一个好主意,因为 Android 每次都会调整图像的大小,以便它适合 ImageView 的空间。

我的想法已经用完了。有人可以提出一些建议吗?

谢谢, 拉斐尔·拉莫斯

【问题讨论】:

    标签: android image bitmap imageview scale


    【解决方案1】:

    您为此标题使用什么类型的图像?使用固定像素大小的图像是个坏主意,因为您必须处理多少分辨率。如果您尝试使用的背景类型可能,您应该考虑使用 9-patch 图像。然后只需将layout_width设置为fill_parent,它会根据需要自动调整大小。

    http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

    编辑:很难确切地说出你有什么,但我建议像下面这样而不是 ImageView:

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="{whatever height you have set}"
        android:id="@+id/header_relative_layout"
        android:background="@drawable/gradient"
        >
        <ImageView
            android:id="@+id/header_imageview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:layout_alignParentLeft="true"
            android:src="@drawable/header_image"
            />
        <TextView
            android:id="@+id/header_textview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/header_text"
            android:layout_toRightOf="@id/header_imageview"
            android:layout_marginLeft="10dp"
            />
    </RelativeLayout>
    

    gradient.xml(放在drawables文件夹中)

    <shape 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:shape="rectangle"
        >
        <gradient 
            android:startColor="#FFFF0000" 
            android:endColor="#80FF00FF"
            android:angle="270"
            />
    </shape>
    

    我实际上并没有编译这个,但它应该相当接近。这样就不用每次都生成一张图片,宽度会自动填满屏幕的全宽。

    这有帮助吗?

    【讨论】:

    • 图像是在运行时创建的。它只是简单地绘制一个褪色的背景,在顶部放置一些固定大小的图标和一个文本。没什么特别的。
    • 我想我知道你要去哪里,除了背景。你有喜欢的背景渐变,还是只是一种颜色?我在上面添加了一个建议的示例。
    • 是的,我有一个渐变的背景。然后我把一个图标放在左边,把文字放在图标的右边。由于资源保存在数据库而不是 RES 文件夹中,因此我只能动态创建图片。我开始相信我无法按照我的意图做到这一点。
    • 尝试具有渐变的可绘制形状。我在上面添加了一个示例(随意更改颜色,这只是一些示例代码)。如果我对您的理解正确,那么这应该完全符合您的需要。如果资源在运行时被拉入,只需在 imageview 上执行 findViewById 和 setImageBitmap() 或 setImageDrawable() 即可。
    • 嗨,kcoppock。你的想法很完美!我只需要将颜色更改为我需要的颜色,它就完美了。谢谢!
    猜你喜欢
    • 2019-03-30
    • 2012-03-06
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多