2011-03-23 3 views
1

Я пытаюсь отобразить простое предупреждение, работающее над моей деятельностью, когда нет доступа к Интернету, однако по какой-то причине я не знаю, когда я устанавливаю значок для предупреждения, коробка получает грязный, слишком большой. Ниже приводится мой код:Проблема с Android Dialog (нестандартная)

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case 1: 
     return new AlertDialog.Builder(SplashScreen.this) 
     .setTitle("Aviso") 
     .setIcon(R.drawable.alert_dialog_icon) 
     .setMessage("Acesso à internet não disponível. Clique OK para sair.") 
     .setCancelable(false) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       SplashScreen.this.finish(); 
      } 
     }) 
     .create(); 
    } 
    return null; 
} 

результат этого кода показывается на изображении ниже.

device screenshot

Что я делаю неправильно? Я что-то пропустил? Этот код был просто скопирован из исходного кода API demos, который отлично работает на моем устройстве.

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

ответ

1

Может быть значок вы используете большого размера .... Масштабирование изображения до растрового Шифрование до небольшого размера и использовать BitmapDrawable ..! ! вместо идентификатора

+0

то будет странно, потому что диалог код и изображение, где копируются из исходного кода API демо, который отлично работает для меня в эмулятор и мое устройство. – Thiago

+0

, то вы говорите, что код и изображение используются также из демонстрационного источника API .. также вы говорите, что это хорошо работает .. но вы сказали: «Когда я устанавливаю значок для предупреждения, коробка становится беспорядочной» означает, что изображение является prblm. ..so использовать меньшее изображение и проверить один раз ... – Udaykiran

+0

Я изменил изображение ldpi из демонстрации api и начал работать. Я буду продолжать пытаться, потому что изображение теряет свое качество, потому что мой экран ldpi. Спасибо – Thiago

2

Лучший способ изменить размер значка. Если вы хотите сделать это программно проверить это ..

// load the origial BitMap (500 x 500 px) 
    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
      R.drawable.android); 

    int width = bitmapOrg.width(); 
    int height = bitmapOrg.height(); 
    int newWidth = 200; 
    int newHeight = 200; 

    // calculate the scale - in this case = 0.4f 
    float scaleWidth = ((float) newWidth)/width; 
    float scaleHeight = ((float) newHeight)/height; 

    // createa matrix for the manipulation 
    Matrix matrix = new Matrix(); 
    // resize the bit map 
    matrix.postScale(scaleWidth, scaleHeight); 
    // rotate the Bitmap 
    matrix.postRotate(45); 

    // recreate the new Bitmap 
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
         width, height, matrix, true); 

    // make a Drawable from Bitmap to allow to set the BitMap 
    // to the ImageView, ImageButton or what ever 
    BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); 

Этот растровый можно использовать следующим образом

builder.setIcon (BMD);

1

Там нет width() и Height() функции, ниже исправленный код:

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.cyj); 
int width = bitmapOrg.**getWidth**(); 
int height = bitmapOrg.**getHeight()**; 
int newWidth = 45; 
int newHeight = 45; 

// calculate the scale - in this case = 0.4f 
float scaleWidth = ((float) newWidth)/width; 
float scaleHeight = ((float) newHeight)/height; 

// create matrix for the manipulation 
Matrix matrix = new Matrix(); 

// resize the bit map 
matrix.postScale(scaleWidth, scaleHeight); 

// rotate the Bitmap 
matrix.postRotate(0); 

// recreate the new Bitmap 
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
           width, height, matrix, true); 

// make a Drawable from Bitmap to allow to set the BitMap 
// to the ImageView, ImageButton or what ever 
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); 
Смежные вопросы