Android 4.1中的输出不同

时间:2014-01-20 11:35:01

标签: android eclipse android-manifest

我在Android 2.3和Android 4.1上运行我的程序,但我的应用程序的图片在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);  

        ...       
    }

    ...     
}

2 个答案:

答案 0 :(得分:4)

删除targetSdkVersion会隐式1,启用所有向后兼容模式,包括UI scaling for apps targeting below API level 4。这就解释了为什么删除uses-sdk“修复了问题。

要修复代码,您必须scale your pixel sizes and measures with screen density

答案 1 :(得分:0)

非常感谢朋友们

我将<use-sdk ... />编辑为

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

并将@SuppressLint("NewApi")添加到MapCanvas

的上方

我的问题解决了!