Настройка фонового изображения приложения для Android - PullRequest
3 голосов
/ 17 февраля 2012

Я хочу установить одинаковое фоновое изображение для всех макетов моего приложения. Мое приложение поддерживает все устройства от мини-телефона до 10,1 планшетов.

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

Я нашел это в одном приложении: app_background.xml в папке для рисования:

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffff00" />
</shape>   

Также, возможно, кто-нибудь мог бы дать мне хорошее объяснение, как разделить дизайн и функции в Java.

Спасибо.

Ответы [ 2 ]

13 голосов
/ 17 февраля 2012

Используйте стили, чтобы сделать это.
1. Создайте подходящее нарисованное изображение для фона
2. Создайте файл values ​​/ styles.xml со следующим содержанием

<style name="AppTheme" parent="android:style/Theme.Black">
      <item name="android:background">@drawable/main_app_bg</item>
   </style>


3. Используйте тему для всего приложения в AndroidManifest.xml

<application android:icon="@drawable/icon"
                 android:label="@string/app_name"
                 android:theme="@style/AppTheme">
1 голос
/ 17 февраля 2012

Ну, вы можете настроить отдельное изображение для автоматического масштабирования для размера экрана каждого устройства, это объясняет, как здесь:

http://developer.android.com/guide/practices/screens_support.html

Проблема в том, что если вы хотите получить хороший аспект, вы должны сделать свое оригинальное изображение довольно большим (таким же большим, как самое большое разрешение, на котором вы ожидаете, что ваше приложение будет использоваться). Затем при уменьшении для меньших экранов эта большая картинка все равно будет занимать больше памяти, чем необходимо.

На самом деле существует не так много разных разрешений, может быть, 7-8 основных. Вы должны сделать отдельные фоновые изображения с размерами, специфичными для каждого целевого разрешения, а затем, в методе вашего действия onCreate(...), вы можете сделать что-то подобное, чтобы получить текущее разрешение экрана устройства:

Display display = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();

и загрузите соответствующий фон для него (с учетом возможных размеров заголовка и строки состояния)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...