【问题标题】:How to display a bitmap as background of view without stretching android如何在不拉伸android的情况下将位图显示为视图背景
【发布时间】:2016-05-17 11:35:29
【问题描述】:

我想将位图设置为视图背景而不进行拉伸,并且我不想将视图宽度和高度更改为换行内容。我想将视图的宽度和高度保持为匹配父级。我设置了如下视图的背景,其中 mDrawingView 是扩展 View 的自定义视图。

 Bitmap tempBitmap = BitmapFactory.decodeFile(copy.getAbsolutePath());
 mDrawingView.setBackground(new BitmapDrawable(getResources(), tempBitmap));

我的布局文件如下所示,

  <MyPackageName.DrawingView
            android:id="@+id/drawing_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"/>

请注意,我没有使用 imageview。

请给我建议?

【问题讨论】:

  • check documentation here 使用默认可用的秤。意识到当在不同的画布中绘制不同的形状(正方形不能完全填满圆形等)时,您的视图会增加,或者不会使用内部的全部区域。
  • backgrounds 被缩放以填充视图。因此,如果视图(很可能)与背景的纵横比不同,则会被拉伸。我想你可能想改用 9 补丁
  • 在我的情况下,我从画廊中动态选择图像。它不是静态图像@BobMalooga

标签: android view bitmap scaling


【解决方案1】:

我已经更改了我的 DrawingView,它扩展了 Imageview 而不是 View,然后像下面这样设置位图

 Bitmap bitmap = BitmapFactory.decodeFile(copy.getAbsolutePath());
  mDrawingView.setImageBitmap(bitmap);

现在位图显示在 imageview 上,无需拉伸,效果完美。

感谢您的宝贵意见和回答。

【讨论】:

  • 如果视图不是 ImageView 怎么办?
【解决方案2】:

如果您使用的是图像视图,那么您可以执行以下操作

 ImageView.ScaleType 

可以是 CenterCrop、fit 等,你可以在这里阅读它,它是 android 原生支持 https://developer.android.com/reference/android/widget/ImageView.ScaleType.html

【讨论】:

    【解决方案3】:

    你可以的

        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setImageResource(R.drawable.res_id);
    

    res_id 是可绘制文件夹中的资源 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多