2014-01-20 6 views
5

Я запускать свою программу на Android 2.3 и Android 4.1, но фотографии моего приложения показали очень маленький в Android 4.1:Different выход в Android 4.1

enter image description here

я удалить <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14" /> в manifest.xml и мое приложение отлично работать на обоих:

enter image description here

, но я не хочу, чтобы удалить <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="14" />

Где моя проблема?

конспект моего кода:

public class MapCanvas extends ImageView 
{  
    ... 

    public MapCanvas(Context context) 
    { 
     super(context); 
    } 

    public MapCanvas(MainActivity context, Bundle state) 
    { 
     super(context);     

     this.context = context; 

     ... 
    }    

    ... 

    @Override 
    protected void onDraw(Canvas canvas) 
    {        
     super.onDraw(canvas);    

     ... 

     //Paint Offset X, Y, Zoom 
     this.paint.setColor(Color.rgb(51, 51, 51)); 
     this.paint.setFakeBoldText(true); 
     this.paint.setTextSize(15); 
     String text = "X:" + OFFSET_X + ", Y:" + OFFSET_Y + ", Zoom:" + MapZoom.Zoom;              
     canvas.drawText(text, 5, 15, paint); 

     ...  
    } 

    ...  
} 
+1

+1 потому что изображение всегда стоит тысячи слов! –

+0

Являются ли разрешение экрана/dpi/размер одинаковым для обоих? –

+0

@Seraphim yes __________________________ – javadaskari

ответ

4

Удаление targetSdkVersion делает это неявно 1, что позволяет все режимы совместимости в обратном направлении, в том числе UI scaling for apps targeting below API level 4. Это объясняет, почему удаление uses-sdk «исправляет» проблему.

Чтобы исправить ваш код, вам нужно будет scale your pixel sizes and measures with screen density.

+0

Я удалил targetSdkVersion, но это dosent work.my изображения находятся в папке с ресурсами. – javadaskari

+0

Конечно, изображение с одним разрешением в активах будет выглядеть меньше на дисплее с более высокой плотностью. Итак, отредактируйте вопрос и покажите, как вы декодируете/масштабируете изображения. – laalto

+0

как насчет 2 картинки android 4.1. я просто удаляю , и все работает отлично. – javadaskari

0

Большое спасибо друзьям

Я редактировал <use-sdk ... /> к

<uses-sdk android:minSdkVersion="1" android:targetSdkVersion="1" /> 

и добавил @SuppressLint("NewApi") выше из MapCanvas

моя проблема решена!

+1

Это ужасное «решение». Вы должны использовать фактические минимальные/целевые значения для версий SDK в манифесте и масштабировать любые значения «dp» в коде для отображения значений пикселей на основе плотности. На вопрос, который я связал в своем ответе, есть некоторые указания на это. – laalto

Смежные вопросы