【问题标题】:Adjust drawable size according to screen size根据屏幕尺寸调整可绘制尺寸
【发布时间】:2013-07-21 04:29:53
【问题描述】:

我正在屏幕上显示一些 TexViews。它们还包含文本以及可绘制的图像。我的问题是如何根据屏幕分辨率缩放可绘制对象 以下是我当前正在运行的代码:

Drawable dr = getResources().getDrawable(R.drawable.image);
        Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
        Drawable d = new BitmapDrawable(this.getResources(),Bitmap.createScaledBitmap(bitmap, 35, 35, true));
        textView.setCompoundDrawablesWithIntrinsicBounds(d, null,null,null);

这里我使用了比率 35,但是当我们在更大的屏幕上运行应用程序时,图像看起来很小。

针对不同的屏幕尺寸缩放图像有什么建议吗?

【问题讨论】:

    标签: android bitmap textview imageview drawable


    【解决方案1】:

    首先,得到密度尺度:

    DisplayMetrics dm = new DisplayMetrics();
    mainContext.getWindowManager().getDefaultDisplay().getMetrics(dm);
    float densityScale = dm.density;
    

    然后在使用前按densityScale值缩放需要的大小:

    float scaledWidth = 35 * densityScale;
    float scaledHeight = 35 * densityScale;
    
    Drawable dr = getResources().getDrawable(R.drawable.image);
    Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
    Drawable d = new BitmapDrawable(this.getResources(),Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true));
    textView.setCompoundDrawablesWithIntrinsicBounds(d, null,null,null);
    

    这假定 35 是 160dpi 的正确尺寸。如果不是,您需要将 35 更改为适合 160dpi 的值。

    有关支持多种分辨率/密度的更多信息,请参阅here

    【讨论】:

      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多