2010-09-23 72 views
0

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

另一个问题是,每当用户旋转屏幕,横幅图像再次创建,但Android似乎不更新图像,因此我有一个横幅缺少其中的一部分。

我想到了一个真正的大图像,适合风景和人像定位。但是,这似乎并不是一个好主意,因为Android每次都会不断调整图像的大小以适应ImageView的空间。

我在这里没有想法了。有人能提出一些建议吗

谢谢,您使用的这个头是什么类型的图像 拉斐尔·拉莫斯

回答

2

?仅仅因为需要处理多少个分辨率,使用固定像素大小的图像是一个糟糕的主意。如果您尝试使用的背景类型可能,您应该考虑使用9补丁的图像。然后,只需将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

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

我还没有真正编译过这个,但它应该相当接近。这样,您不必每次都生成图像,并且宽度将自动填充以获取屏幕的整个宽度。

这是否帮助?

+0

图像在运行时创建。它只是绘制一个褪色的背景,将一些固定大小的图标和文本放在顶部。没有什么花哨。 – 2010-09-24 12:38:27

+0

我想我明白你要去的地方,除了背景。你喜欢背景的渐变,还是仅仅是一种颜色?我已经在上面添加了一个建议示例。 – kcoppock 2010-09-24 14:16:48

+0

是的,我有一个背景渐变。然后,我在左侧放置一个图标,并在图标的右侧放置文字。由于资源保存在数据库而不是RES文件夹中,因此我只能在运行中创建图片。我开始相信我无法按照我打算的方式做到这一点。 – 2010-09-28 15:31:08