Android: (плохо) низкое качество изображения на фоне макета - PullRequest
4 голосов
/ 20 марта 2012

Я попробовал все ответы, которые нашел в разделе Android, но безуспешно, прежде чем я оставлю этот вопрос ...
по какой-то причине качество изображения на устройстве плохое и в Eclipseа в виртуальном устройстве очень хорошо
посмотрите на скриншоте пример: пример http://img714.imageshack.us/img714/1358/84044294.jpg

что мне делать?я пытаюсь сделать изображение с 72dpi и 300 dpi, разрешение PNG / JPG составляет 1280x800 , но ничего не работает ...
Пожалуйста, помогите !!

Это мой LiveNewsActivity.java может я что-то не так делаю?

package com.prog.livenews;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;


public class LiveNewsActivity extends Activity {
/** Called when the activity is first created. */

//############################
//######### VARS #############

Button login;
Button register;

//############################
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
    getWindow().setFormat(PixelFormat.RGBA_8888);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.bg, options);

    findViewById(R.id.frameLayout1).setBackgroundDrawable(new BitmapDrawable(gradient));

    login = (Button) findViewById(R.id.main_login_button);
    register = (Button) findViewById(R.id.main_register_button);



    login.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("com.prog.livenews.LOGIN"));
        }
    });

    register.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startActivity(new Intent("com.prog.livenews.REGISTER"));
        }
    });


}

}

Ответы [ 4 ]

7 голосов
/ 22 июля 2012

попробуйте:

поместите его перед setContentView (layoutId) для вашего первого действия

getWindow().setFormat(PixelFormat.RGBA_8888);

и после вызова setContentView (layoutId) в первом упражнении вы вводите следующий код:

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

и, наконец, вы помещаете свои xml-изображения в папку res / drawable «если у вас есть xml-изображения», а изображения png, jpeg и других изображений, которые вы помещаете в папку res / drawable-hdpi.

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

2 голосов
/ 22 марта 2012

О.К. ребята, Я нашел решение ... Как я понимаю ... при сохранении градиентного изображения в Photoshop, Photoshop попытается оптимизировать размер изображения путем удаления альфа-канала.

Так что вам нужно удалить один пиксель из верхнего (левого / правого) угла или нижнего (правого / левого) угла

и затем Photoshop «увидит», что изображение имеет альфа-канал, и оно будет работать на устройстве ... имейте в виду ... некоторые устройства не могут показать идеальный цвет градиента ..

Надеюсь, это было полезно! Спасибо, ребята, за вашу помощь!

2 голосов
/ 20 марта 2012

Я попробовал все ответы, которые нашел в разделе Android, безуспешно

Было бы полезно, если бы вы указали, какие подходы вы тоже пробовали, но комментарий Маркаверно.Вы должны убедиться, что ваше изображение и окно имеют большую битовую глубину (вероятно, ARGB_8888).См. эту статью для получения дополнительной информации, и вы можете включить дизеринг.Помещение этого в onCreate должно о многом позаботиться:

getWindow().setFormat(PixelFormat.RGBA_8888);
0 голосов
/ 20 марта 2012

Попробуйте использовать изображение высокого качества. Можете ли вы подтвердить, что фон также содержит изображение глобуса и текст на нем? Имеет ли фон градиентный цвет или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...