在屏幕旋转时处理ImageView大小

时间:2014-09-02 17:46:07

标签: android

这不是一个问题,而是我正在处理的应用程序的要求。我在该活动中有一个活动和一个片段。这是片段的布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 tools:context=".NavigationActivity"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fillViewport="true">
    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/avaImage"
            android:layout_width="687dp"
            android:layout_height="438dp"
            android:gravity="right|center_vertical"
            android:layout_above="@+id/txtLabel"
            android:layout_marginTop="40dp"
             />

        <TextView
            android:id="@+id/txtLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="92dp"
            android:layout_marginTop="20dp"
            android:text="Available"
            android:textSize="26sp" />

    </RelativeLayout>
</ScrollView>

我以编程方式将imageView的{​​{1}}包含在一个可绘制的资源中。

src

图像在纵向方向上非常好用,但在横向方向上,图像缩小了。 所以,我的问题是,有没有办法控制图像在屏幕旋转时缩小多少,确保它在Android设备上显示相同的方式?

2 个答案:

答案 0 :(得分:1)

使用ImageView.ScaleType指定图片处理尺寸更改的方式。这两个属性将保持原始宽高比:

CENTER_INSIDE 均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。

CENTER_CROP 均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或大于视图的相应尺寸(减去填充)。

答案 1 :(得分:0)

试试这段代码:

@Override
public void onConfigurationChanged( Configuration newConfig)
 {
   super.onConfigurationChanged( newConfig);
   SCREEN_WIDTH  = contextApplication.getResources().getDisplayMetrics().widthPixels;
   SCREEN_HEIGHT = contextApplication.getResources().getDisplayMetrics().heightPixels;
   if( SCREEN_WIDTH < SCREEN_HEIGHT) // portret
     {
       image.setAdjustViewBounds( true);
       image.setScaleType( ScaleType.CENTER_INSIDE);
       image.setMaxWidth( 10);
       image.setMinimumWidth( 10);
       image.setMaxHeight( 10);
       image.setMinimumHeight( 10);
     }
    else // land or square (if this is exist :) )
     {
       image.setAdjustViewBounds( true);
       image.setScaleType( ScaleType.CENTER_INSIDE);
       image.setMaxWidth( 20);
       image.setMinimumWidth( 20);
       image.setMaxHeight( 20);
       image.setMinimumHeight( 20);
     }
 }

并将android:configChanges="keyboardHidden|orientation"添加到AndroidManifest中的活动