Android带图片的网格视图(图片缩小并模糊)

3

enter image description here我需要在我的应用程序主屏幕上显示7个图标。为此,我使用ImageView将图标排列在网格视图上以显示图像。在模拟器上看起来非常好,但当我在LG Optimus p350上部署应用程序时,图像会缩小并变得模糊,请帮助我如何清晰地显示实际大小的图像:

我尝试的代码是:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:columnWidth="61dp"
    android:numColumns="3" android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp" android:stretchMode="spacingWidthUniform"
    android:gravity="center" android:layout_gravity="center" />

图标尺寸为61*80

编辑:

<supports-screens android:smallScreens="true"
        android:normalScreens="true" android:largeScreens="true"
         android:anyDensity="true"/>

请查看图片和代码,模拟器上的输出如下所示。我希望在设备上也能以这种清晰度显示输出。请指导。
请参见第二张截图(QVGA模拟器上的模糊),并指导我如何纠正它。

快照会更有用。 - Paresh Mayani
@ PM - Paresh Mayani:现在我已经添加了图片,请帮助我。 - Shruti
2个回答

2

对我来说,这些图像看起来并不模糊,只是因为更高的屏幕分辨率而变小了。但文本看起来确实模糊。

所以我建议使用 ImageView TextView 的组合。将文本和图像分开。文本将被适当缩放。 您还可以为不同分辨率提供多个图像集。

编辑: 您可以创建类似于此的网格项布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:gravity="bottom"
android:layout_width="wrap_content" 
android:layout_gravity="bottom">

<ImageView android:id="@+id/thumbnailImage"
    android:layout_height="70dp" 
    android:layout_width="fill_parent"      
    android:gravity="center_horizontal" />

<TextView android:id="@+id/thumnailTitle" android:text="TextView"
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="fill_parent"
    android:gravity="center_horizontal|bottom" />
</LinearLayout>

创建一个扩展BaseAdapter类的自定义网格适配器:
public class MyGridAdapter extends BaseAdapter
{...}

将适配器与您的网格关联:

adapter = new MyGridAdapter();

GridView gridView = (GridView) findViewById(R.id.gridView);
gridView.setAdapter(adapter);

然后只需要使用getView适配器方法将项目填充到网格中即可。
public View getView(int position, View convertView, ViewGroup parent)
{
   // assuming the grid item layout is named "grid_item"
   View view = inflater.inflate(R.layout.grid_item, null);

   TextView text = (TextView) view.findViewById(R.id.thumnailTitle);
   text.setText("Test");

   ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnailImage);
...

如何在GridView的单元格中将ImageView和TextView组合起来? - Shruti

0
你是否提供多分辨率资源?请仔细阅读关于支持多屏幕的文章。
我认为图片并没有缩小,只是因为你的手机比你测试的模拟器具有更高的密度或分辨率,所以看起来更小了。

此外,您的资源需要适应多个屏幕,并放置在它们的文件夹中。 - Ovidiu Latcu
我需要将所有7个图标保存在不同的文件夹(drawable-ldpi、drawable-mdpi、drawable-hdpi)中,分别使用3232、4848和6464的尺寸吗?我使用的图片尺寸为6180。 - Shruti
不需要保存所有版本。Android会决定哪个最适合。您提供的越多,结果就越好。 - Drejc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接