2010-11-14 2 views
0

Моя проблема заключается в следующем: Я использую эмулятор android, ориентируясь на android 2.2. Я создал пользовательский вид, который я хочу обрабатывать фон моего приложения, в этом представлении я хочу только отобразить изображение, но хочу, чтобы он заполнил весь экран.Как масштабировать изображение для заполнения экрана

Я инициализирую вид из своей «деятельности» следующим образом: BackgroundView bw = new BackgroundView (this);

Проблема: На моем жестком диске изображение ресурса, которое я использую, составляет 500x375 пикселей. После вызова:

Bitmap m_resourceBitmap = BitmapFactory.decodeResource (getResources(), R.drawable.landscape_1); int nWidth = m_resourceBitmap.getWidth(); int nHeight = m_resourceBitmap.getHeight();

возвращенный nWidth и nHeight зависят от того, где я разместил ресурс, если я поместил его в «drawable-mdpi», я получаю исходный размер, иначе я получаю другие размеры.

С другой стороны, если я спрошу мнение для его ширины и высоты с помощью this.getWidth(); this.getHeight();

Я получаю фиксированные значения, но отличается от разрешения, я ожидал от устройства (я установил 480x800 устройство, и я получаю 320x533)

и, наконец, если я пытаюсь создать масштабную матрицу, используя размеры вида, деленные на размер изображения, результат, на экране, изображение намного меньше, чем экран ...

Мой вопрос: Какие вопросы я должен задать и из каких объектов, чтобы внутри представления я мог рисовать ресурс Растровое изображение так что он занимает весь экран?

+0

Это может помочь вам, если вы отметите это с помощью «Android» –

ответ

9

Не можете ли вы сделать все это в XML-файле макета? (Вот пример, который я использую для моего фона меню изображения)

<ImageView android:id="@+id/menuBackground" 
     android:src="@drawable/imageResource" 
     android:adjustViewBounds="true" 
     android:gravity="center_vertical" 
     android:scaleType="fitXY" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_x="0dp" 
     android:layout_y="0dp" /> 

Тогда, если вам нужно изменить его во время выполнения все, что вам нужно сделать, это изменить вытяжку.

+4

Я бы не использовал fitXY, хотя, если только это не градиент или что-то, где соотношение сторон не имеет значения (даже тогда я бы, вероятно, не сделал этого) , Используйте centerCrop, если вы хотите, чтобы он масштабировался пропорционально заполнению экрана. – kcoppock

+0

Хороший совет! Я не знал об этом. – SlowSeer

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