2015-12-15 5 views
21

Android студия 2,0 Preview 3bИспользование слоя-списка для отображения некоторых Drawable изображений

Здравствуйте,

Я создал следующий макет, который я хочу использовать для фона для моего приложения. Я использую layer-list, и я хочу отобразить миску гороха в двух местах. Все выглядит нормально в предварительном просмотре, но когда я запускаю genymotion или некоторые дешевые китайские устройства, изображение растягивается по экрану. Однако на Android AVD все выглядит отлично, и на моем Nexus 5 (реальное устройство) все работает нормально.

Это то, что я хочу, и так оно отображается в AVD и Nexus 5. Как вы можете видеть, проблем нет.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape> 
      <gradient 
       android:centerX="0.5" 
       android:centerY="0.3" 
       android:endColor="#08e25b" 
       android:gradientRadius="300dp" 
       android:startColor="#b7e9c9" 
       android:type="radial" /> 
     </shape> 
    </item> 

    <item 
     android:width="48dp" 
     android:height="48dp" 
     android:left="350dp" 
     android:top="400dp"> 
     <bitmap android:src="@drawable/peas" /> 
    </item> 

    <item 
     android:width="68dp" 
     android:height="68dp" 
     android:drawable="@drawable/peas" 
     android:left="-20dp" 
     android:top="480dp" /> 
</layer-list> 

Я поместил peas.png файл в drawable-nodpi и просто добавить ширину и высоту в layer-list

И когда я бегу на genymotion и некоторых дешевых интеллектуальных устройств я получаю следующее: enter image description here

Just quick summary. 

Nexus 5 real device and AVD devices works ok 
Genymotion and cheap smart devices doesn't display correctly 

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

Большое спасибо за любые предложения.

+0

Привет, вы пытались использовать 'px' вместо 'dp' (android: width = "68px")? –

ответ

17

Обновить ваш слой-лист следующего

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<item> 
    <shape> 
     <gradient 
      android:centerX="0.5" 
      android:centerY="0.1" 
      android:endColor="#08e25b" 
      android:gradientRadius="300dp" 
      android:startColor="#b7e9c9" 
      android:type="radial" /> 
    </shape> 
</item> 
<item 
    android:width="48dp" 
    android:height="48dp" 
    android:bottom="68dp" 
    android:right="-20dp"> 
    <bitmap 
     android:gravity="bottom|right" 
     android:src="@drawable/peas" /> 
</item> 
<item 
    android:height="68dp" 
    android:left="-20dp" 
    android:bottom="-20dp" 
    android:width="68dp"> 
    <bitmap 
     android:gravity="bottom|left" 
     android:src="@drawable/peas" /> 
</item> 

+0

Надеюсь, он решит вашу проблему. – SachinS

+0

Спасибо, что на самом деле работали сейчас, когда они отображают на genymotion и других моих дешевых устройствах. Однако теперь, когда я использую xml-растровые изображения, я не могу изменить размер изображения peas.png. В любом случае, я могу изменить размер изображений? Благодарю. – ant2009

+0

Вы пробовали код? – SachinS

8

Поместите ваши изображения во всех папках плотности (xxhdpi, xhdpi, ИПЧР).

Система выбирает ресурсы изображения на основе разрешения экрана.

+1

Спасибо, это был правильный ответ. – ant2009

+1

Затем этот я должен быть отмечен как принятый ответ. – AndroidMechanic