2014-09-02 2 views
0

Это не проблема, а требование приложения, над которым я работаю. У меня есть активность и фрагмент внутри этой активности. Это расположение фрагмента:Ручка Размер изображения на экране вращения

<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 «s src программно.

ImageView image = (ImageView) rootView.findViewById(R.id.avaImage); 
image.setImageDrawable(getResources().getDrawable(R.drawable.availability_green)); 

Изображение работает довольно красиво в портретной ориентации, но в ландшафте изображение сокращается. Итак, мой вопрос заключается в том, есть ли способ контролировать, насколько изображение будет уменьшаться при повороте экрана, убедившись, что оно будет отображаться одинаково на Android-устройствах?

ответ

1

Используйте ImageView.ScaleType, чтобы уточнить, как будет изменяться изображение. Эти два свойства сохранят исходное соотношение сторон:

CENTER_INSIDE Масштабируйте изображение равномерно (поддерживайте соотношение сторон изображения), чтобы обе размеры (ширина и высота) изображения были равны или меньше соответствующего размера вид (минус заполнение).

CENTER_CROP Масштабируйте изображение равномерно (поддерживайте соотношение сторон изображения), чтобы обе размеры (ширина и высота) изображения были равны или больше соответствующего размера представления (минус заполнение).

+0

Позвольте мне попробовать. Но нет ли другого способа указать, насколько нужно масштабировать изображение при вращении экрана? –

+1

Да, вы можете использовать [android: maxHeight] (http://developer.android.com/reference/android/widget/ImageView.html#getMaxHeight()) и [android: maxWidth] (http://developer.android .com/reference/android/widget/ImageView.html # getMaxWidth()) @BasitSaeed –

+0

Должен ли я использовать его программно или просто объявить его в файле макета? –

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" к деятельности в AndroidMainfest

+0

Nop! Это не так! –

Смежные вопросы