Ужасное качество растрового изображения ImageView?
у меня есть заставка с ImageView
играет роль фона. Независимо от того, разрешаю ли я масштабировать свое растровое изображение (что я и делаю), качество изображения ужасное. Я думаю, это уменьшает глубину цвета. Я уже огляделся, и одним из предложений было разместить мой образ в raw
вместо drawable
но это не помогло. Вот скриншот:
что именно здесь происходит и как это исправить это?
EDIT: я не применял это растровое изображение программно, поэтому нет соответствующего кода Java. Вот код XML для этого действия:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/RelativeLayoutSplash"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawingCacheQuality="high"
android:orientation="vertical"
android:padding="@dimen/splash_padding"
android:scrollbarAlwaysDrawVerticalTrack="true"
tools:context=".SplashActivity" >
<ImageView
android:id="@+id/ImageViewBg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/logo_description"
android:scaleType="centerCrop"
android:src="@drawable/splash_bg_register" />
<ImageView
android:id="@+id/ImageViewLogo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/logo_description"
android:maxHeight="@dimen/logo_maxheight"
android:maxWidth="@dimen/logo_maxwidth"
android:layout_centerVertical="true"
android:src="@drawable/logo" />
<TextView
android:id="@+id/TextViewCopyright"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="@string/copyright"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/white_50"
android:textSize="@dimen/copyright_size" />
</RelativeLayout>
EDIT: я пробовал getWindow().setFormat(PixelFormat.RGBA_8888);
как было предложено, что сделало видимую разницу, но кольцевание все еще присутствует. этой образ я использую в качестве фона.
8 ответов
кольцевание происходит в основном при нарушении соотношения сторон изображения.
вы можете попробовать любой из следующих вариантов:
сделайте свой образ
.9.png
. В этом случае он автоматически зафиксирует любые растяжки и позаботится о кольцевании.-
нанесите поверхностное колебание на изображение, которое может предотвратить любые необычные полосы.
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/b1" android:tileMode="repeat" android:dither="true" />
каковы размеры вашего изображения? И что это за устройство? Я подозреваю, что размер изображения не соответствует размеру дисплея, и он находится в неправильной папке для рисования ресурсов. Изображение выглядит довольно масштабных. Эти статьи должны помочь вам выбрать разрешение изображения и папку ресурсов для разных экраны.
http://developer.android.com/guide/practices/screens_support.html
http://developer.android.com/training/multiscreen/index.html
вы должны установить цвет окна. В своей деятельности положите что-то вроде этого:
getWindow().setFormat(PixelFormat.RGBA_8888);
Я предполагаю, что размер изображения меньше, чем область, в которой отображается изображение. Таким образом, может быть изображение масштабируется и теряет качество.
What you can try is:
1. Either put the image of similar dimension
2. use 9 patch image ( good idea )
вам нужно изменить размер изображения на разные размеры и поместить их в соответствующие папки для рисования под res/
попробуйте antialias это может решить вашу проблему.
создайте растровое изображение с приведенным ниже xml.
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background"
android:antialias="true"
android:dither="true" />
то, что вы делаете, это установить изображение в xml, что гораздо больше зависит на то, что поддержка разрешения изображения .
существует несколько папок для каждой поддерживаемой плотности нескольких устройств, поместите свое изображение в какую-нибудь подходящую папку dpi .
пожалуйста, обратитесь по этой ссылке для негоhttp://developer.android.com/guide/practices/screens_support.html
см. тот же значок приложения, как вести себя неуверенно в разных папка
пример приложения без поддержки различных плотностей, как показано на экранах с низкой, средней и высокой плотностью
пример приложения с хорошей поддержкой различных плотностей (это независимая плотность), как показано на экранах с низкой, средней и высокой плотностью.
просто настройте его, сделав изображение фоновым. Вот пример кода
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/your_image"
/>