Полноэкранное фоновое изображение в действии
Я вижу много приложений, которые используют полноэкранное изображение в качестве фона.
Это пример:
![Full screen background image]()
Я хочу использовать это в проекте, лучший способ, который я нашел до сих пор, - использовать изображение с большим размером, поместить его в ImageView
и использовать android: adjustViewBounds="true"
для настройки полей
Проблема заключается в том, что если экран с очень высоким разрешением, изображение падает.
Другим вариантом, о котором я думал, является использование изображения в FrameLayout
, с match_parent
в width
и height
в качестве фона... это растягивает изображение, но я думаю, что результат не очень хорош.
Как вы это сделаете?
Ответы
Ответ 1
Есть несколько способов сделать это.
Вариант 1:
Создавайте разные идеальные изображения для разных точек и помещайте их в соответствующую папку. Затем установите
android:background="@drawable/your_image
Вариант 2:
Добавьте одно большое изображение. Используйте FrameLayout. В качестве первого ребенка добавьте ImageView
. Установите в вашем ImageView следующее.
android:src="@drawable/your_image"
android:scaleType = "centerCrop"
Ответ 2
Другим вариантом является добавление отдельного изображения (не обязательно большого) в drawables (пусть его имя backgroung.jpg), создайте ImageView iv_background в корне вашего xml без атрибута "src".
Затем в методе onCreate соответствующей активности:
/* create a full screen window */
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.your_activity);
/* adapt the image to the size of the display */
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(
getResources(),R.drawable.background),size.x,size.y,true);
/* fill the background ImageView with the resized image */
ImageView iv_background = (ImageView) findViewById(R.id.iv_background);
iv_background.setImageBitmap(bmp);
Нет обрезки, нет изображений разных размеров.
Надеюсь, это поможет!
Ответ 3
Вы должны поместить изображения различных размеров в следующую папку
Подробнее см. ссылку
-
ldpi
-
MDPI
-
ИПЧР
-
xhdpi
-
xxhdpi
и используйте фон RelativeLayout или LinearLayout вместо использования ImageView в качестве примера
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/your_image">
</RelativeLayout>
Ответ 4
Что насчет
android:background="@drawable/your_image"
в главном макете вашей деятельности?
Таким образом вы также можете иметь разные изображения для разных плотностей экрана, помещая их в соответствующие папки res/drawable-**dpi
.
Ответ 5
используйте этот
android:background="@drawable/your_image
в вашей деятельности очень первый линейный или относительный макет.
Ответ 6
Если вы хотите, чтобы ваше изображение показывало BEHIND прозрачную панель действий, поместите следующее в определение стиля темы:
<item name="windowActionBarOverlay">true</item>
<item name="android:windowActionBarOverlay">true</item>
Наслаждайтесь!
Ответ 7
Прошло некоторое время, так как это было опубликовано, но это помогло мне.
Вы можете использовать вложенные макеты. Начните с RelativeLayout и поместите в него ImageView.
Установите высоту и ширину в match_parent, чтобы заполнить экран.
Установите scaleType = "centreCrop", чтобы изображение соответствовало экрану и не растягивалось.
Затем вы можете поместить любые другие макеты, как обычно, например LinearLayout ниже.
Вы можете использовать android: alpha для установки прозрачности изображения.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/image"
android:alpha="0.6"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="There"/>
</LinearLayout>
</RelativeLayout>
Ответ 8
В строках с ответом NoToast вам нужно будет иметь несколько версий "your_image" в ваших res/drawable-ldpi, mdpi, hdpi, x-hdpi (для больших экранов xtra), удалить match_parent и сохранить андроид: adjustViewBounds = "true"
Ответ 9
Добавьте android:background="@drawable/your_image"
внутри своего Relativelayout/Linearlayout
Работали.
Ответ 10
Если у вас есть bg.png в качестве фонового изображения, просто:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"/>
</RelativeLayout>
Ответ 11
Рабочая. вы должны попробовать это:
android:src="@drawable/img"