2013-07-11 59 views
0

我是android开发的新手,仍然无法完全理解尺寸如何适用于不同的布局。我想这本书的预览放到这个模板:将图像置于ImageView上的正确方法是什么?

book_template

我试着使用的FrameLayout来实现它。这个想法是,预览图像的中心将正好在png背景的中心位置。下面是代码:

<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=".5" > 

    <ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/book_frame" /> 
    <ImageView 
    android:id="@+id/previewImage" 
    android:layout_width="83dp" 
    android:layout_height="83dp" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:src="@drawable/abs__ab_bottom_solid_dark_holo" /> 
</FrameLayout> 

在布局构建结果看起来就像我希望它是:

emulator_result

在真正的手机是不同的:

phone_result

我认为在其他决议中它也会有所不同。所以我的问题是如何同步这些图像,所以在任何调整大小和扭曲预览将正确适合封面? 可能的解决方案是从图像中删除边框并将其放在previewImage上。但是在应用程序中有几个类似的用例,无法删除边框,所以我想找出所有这些边框的通用解决方案。

回答

0

所以对我来说合适的解决办法是内图像的边界单独部署到自己的ImageView,它在照片上插入布局,并添加1DP填充到照片。 布局如下:

 <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight=".5" > 

      <ImageView 
       android:id="@+id/bookFrame" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical|center_horizontal" 
       android:src="@drawable/book_frame" /> 

      <ImageView 
       android:id="@+id/previewImage" 
       android:layout_width="83dp" 
       android:layout_height="83dp" 
       android:layout_gravity="center_vertical|center_horizontal" 
       android:padding="1dp" 
       android:scaleType="centerCrop" 
       android:src="@drawable/abs__ab_bottom_solid_dark_holo" /> 

      <ImageView 
       android:id="@+id/previewBorder" 
       android:layout_width="83dp" 
       android:layout_height="83dp" 
       android:layout_gravity="center_vertical|center_horizontal" 
       android:src="@drawable/preview_border" /> 
     </FrameLayout> 
0

你有你的问题的答案。

发生在您的案例图像大小问题的不同屏幕分辨率

硬编码的东西总是给你奇怪的结果在你的情况下 android:layout_width="83dp" android:layout_height="83dp"这段代码。

检查这个link这将指导您管理可绘制为不同的屏幕。

,这里是另一个link

相关问题