2012-03-23 60 views
1

仍然有问题经过两年的Android开发的我还没有100%的把握什么资源,我需要提供使不同尺寸和分辨率的设备我的GridView的工作。与GridView的

我还在学习,比如我最近发现,你不在所有屏幕尺寸提供每绘制 - 如果你把东西xhdpi那么Android是足够聪明的调整是在飞行中最的时间 - 但有几个怪癖。例如,如果我尝试使用仅在GridView中的mdpi设备上的drawable-xhdpi bin中定义的drawable,则该drawable将在视觉上正确调整大小,但其周围的空白不会 - 这仍然是原始大小。最初我通过为GridView和相关的适配器视图的各个方面强制定义尺寸来解决这个问题,但是它周围有大量的代码气味,所以我手动调整了drawables的大小,将它们放在它们各自的bin中(drawable-mdpi,绘制,华电国际和绘制-xhdpi)和去除图像大小等

的所有强制所以我现在有:

<GridView 
     android:id="@id/home_image_grid" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:columnWidth="100dp" 
     android:gravity="center" 
     android:listSelector="#00000000" 
     android:numColumns="auto_fit" 
     android:stretchMode="columnWidth" 
    > 
    </GridView> 

,并为每个项目的布局是:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="0dip" 
      android:gravity="center" 
      android:orientation="vertical" 
      android:padding="0dip"> 

    <ImageView 
      android:id="@id/home_button_image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     /> 

     <TextView 
      android:id="@id/home_button_text" 
      android:layout_width="wrap_content"  
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:textColor="@color/default_text_colour" 
      android:textSize="@dimen/home_button_text" 
      /> 

    </LinearLayout> 

所以非常好...

的应用程序,我目前正在对我已经基本完成,并已做不同设备上的一些测试 - 它看起来正常的屏幕尺寸xhdpi,华电国际& MDPI设备良好。然后我伸出我的测试到其他设备 - 我测试上的HTC Flyer的是大屏幕尺寸,MDPI - 和GridView控件现在看起来垃圾 - 这是正确拿起MDPI图像,这是微小的。

做一些阅读四周,我发现GridView tutorialGridView tutorial,它说把所有的可绘制在“绘制”本,所以我遵循了这一建议,并再次一切都显得垃圾 - 仔细检查(并具有实际通读示例代码),他们似乎在手工设置每个图像的尺寸在GridView - 这是我一直在做,开始了,而这意味着我将不得不手动设置的图像尺寸为每个排列的设备。

So..I'm在想,如果我在这里已经错过了一次机会 - 我应该把我在我的文件夹绘制坚持的图像,并手动强制尺寸为每purmutation的第一种方法?我是否应该为所有屏幕大小和分辨率的排列绘制一组新的图像?

我如何能保证无论我做什么,它要好看我没有测试它的设备上?

无论哪种方式,感觉就像我做错了 - 但我不能工作了如何正确地做到这一点不麻烦的负荷。谁能帮忙?

回答

1

我不知道你所说的“强制每一个排列的大小”的意思,但你可以把正确的尺寸可绘制在下列文件夹:

  • 绘制,MDPI
  • 绘制-large- MDPI

每个设备会从相应的文件夹中选择合适的可绘,你可以适用于mdpi分离器件正常和高画质图像。

那不是解决问题了吗?

P.S:drawable文件夹仅用于XML可绘制或不依赖于设备密度的照片,而不是用于UI的图像。这些将按照每个分辨率和密度正确缩放。

+0

通过迫使大小 - 我的意思是不必手动制定出正确的尺寸图像。我可以做到这一点,但这并不能很好地扩展 - 我不得不为每个屏幕尺寸和分辨率的排列做这个。如果您在我发布的链接中看到,Android开发人员指南中提到“将图像文件保存到项目的res/drawable /目录中。” – Martyn 2012-03-23 14:21:00

+0

不,你发布的链接并不是这么说的,它实际上是在说它的含义。无论哪种方式,您都应该将您的**图像**放入相应的'drawable-Xdpi'文件夹中,并为每个密度提供特定的可绘图。如果你有XML drawable,那么把它们放在'drawable'文件夹中。你可以在每个'drawable-Xdpi'文件夹中放入一个XML文件的副本,但这不会起任何作用。无论如何,你有没有尝试过我建议的? – 2012-03-23 14:31:16

+0

我很抱歉 - 你是对的,我链接到错误的教程 - 链接更正。我确信你的建议可行,但我要求的是一个可以扩展到其他设备的答案,这些设备我没有,或者还没有存在(小屏幕xhdpi设备?) – Martyn 2012-03-23 14:35:31