Почему мой импортированный PNG такого низкого качества

#android #background

#Android #фон

Вопрос:

Я делаю:

 android:background="@drawable/mobile_vforum_bg"
  

в main.xml файл, чтобы просто установить BG.

Это работает, просто качество изображения очень низкое при просмотре на эмуляторе. Это PNG размером 320×480 (96 точек на дюйм и то же самое в папке low, med и high). Когда я использовал Titanium для создания своего приложения для Android, оно выглядело нормально. Сейчас я использую eclipse и java, и это выглядит плохо.

Ответ №1:

У меня возникла эта проблема при установке изображения с высоким разрешением в качестве фона для activity, и я смог решить ее, используя следующий Java-код из onCreate() метода Activity.

         BitmapFactory.Options myOptions = new BitmapFactory.Options();
        myOptions.inDither = true;
        myOptions.inScaled = false;
        myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
        myOptions.inDither = false;
        myOptions.inPurgeable = true;
        Bitmap preparedBitmap = BitmapFactory.decodeResource(yourAppName.getSharedApplication().getResources(),
                R.drawable.yourImage, myOptions);
        Drawable background = new BitmapDrawable(preparedBitmap);
        ((LinearLayout) findViewById(R.id.yourLayoutId))
            .setBackgroundDrawable(background);
  

Также не устанавливайте фон из XML-макета, если вы используете этот код. В случае, если это не сработает, попробуйте установить следующие строки вне тега приложения в AndroidManifest.xml

 <supports-screens android:largeScreens="true"
    android:normalScreens="true" android:smallScreens="true"
    android:anyDensity="true" />
  

Надеюсь, это поможет!!!

Ответ №2:

Попробуйте переместить его в папку «res / drawable_hdpi», у меня это сработало.

Комментарии:

1. У меня уже есть одно и то же изображение во всех трех папках. Возможно, эмулятор, на котором я тестирую, настроен на низкое разрешение или что-то в этом роде

2. SDK оптимизирует все изображения, поэтому я думаю, что есть другой вариант — поместите его в папку / res / raw (файлы, которые вы туда помещаете, остаются неизменными в процессе сборки) и загрузите его вручную, используя Resources.openRawResource() .

3. Я не могу выполнить этот вызов в XML, хотя, как и то, как я делаю это выше. Как бы я тогда установил фон приложения, используя Java?

4. yourview.setBackgroundDrawable(img);

5. В итоге я создал новое виртуальное устройство с немного другими настройками, и теперь фон выглядит нормально. Я все еще использую метод XML.