2016-08-26 12 views
0

Я установил единый образ (640x960) следующим образом:Как рассчитать размер изображения для заставки экрана конкретного андроид устройства

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.imagetest.MainActivity" 
    tools:showIn="@layout/activity_main"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" 
     android:src="@drawable/launch_image" 
     android:scaleType="center"/> 
</RelativeLayout> 

Обратите внимание на scaleType является «центр», который, согласно документации не означает отсутствие масштабирования. При работе на Nexus 5x это изображение выглядит намного больше, чем экран, и отображается только частично.

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

Я понимаю, что изображение Nine Patch можно использовать для создания всплесков, которые не будут искажать часть изображения, которое не следует масштабировать. Этот вопрос частично для меня, чтобы лучше понять, как пиксели изображения относятся к экрану реального устройства, и если использование изображения Nine Patch является единственным способом гарантировать, что изображения брызг будут работать на устройствах Android любых размеров экрана.

Большое спасибо

+0

В какой плотности папки вы ставите этот образ? – rajesh

+0

Как будто вы помещаете изображение только в одну папку, например. xhdpi, android будет масштабировать это изображение в соответствии с его плотностью. Таким образом, изображение будет выглядеть меньше на экране hdpi и больше на экранах xxhdpi и xxxhdpi. – rajesh

+0

Хороший вопрос. У меня было только изображение, пригодное для рисования. Почему это сделает изображение 640x960 больше, чем экран Nexus 5x? –

ответ

0

scaleType centerInside должен сделать трюк, не производить расчеты в коде

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" 
     android:src="@drawable/launch_image" 
     android:scaleType="centerInside"/> 
+0

Спасибо NathaZ, но часть вопроса заключалась в том, чтобы понять, почему изображение 640x960 больше на Nexus 5x wihch имеет разрешение экрана 1080x1920. Я знаю, что разрешение изображения не соответствует разрешению экрана. Но я хотел бы понять, как эти два связаны друг с другом. –

+0

Почему вы используете приложение: layout_behavior на заставке? – znat