Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在API 19上缩放矢量绘图_Java_Android_Android Drawable_Scaling_Android Vectordrawable - Fatal编程技术网

Java 在API 19上缩放矢量绘图

Java 在API 19上缩放矢量绘图,java,android,android-drawable,scaling,android-vectordrawable,Java,Android,Android Drawable,Scaling,Android Vectordrawable,我正在编写一个Android应用程序,其版本为minSdkVersion=15(19日测试)。我想在中间用一个小的电话图片覆盖。我从标准Android图片中添加了可绘制(xml)资源ic_smartphone_black_24dp,并为覆盖创建了一个ImageView,如下所示: <ImageView android:id="@+id/overlay" android:layout_width="0dp" android:layout_height="0dp"

我正在编写一个Android应用程序,其版本为
minSdkVersion=15
(19日测试)。我想在中间用一个小的电话图片覆盖。我从标准Android图片中添加了可绘制(xml)资源
ic_smartphone_black_24dp
,并为覆盖创建了一个ImageView,如下所示:

<ImageView
    android:id="@+id/overlay"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:alpha="1."
    android:background="@drawable/overlay_full"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>
<ImageView
    android:id="@+id/overlay"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:scaleType="center"
    android:background="@drawable/just_the_background"
    app:srcCompat="@drawable/ic_smartphone_black_24dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>
参加活动

  • ImageView
    更改为
    android.support.v7.widget.AppCompatImageView
    (并使用java代码而不是xml设置背景)
  • wrap_content
    而不是
    0dp
    作为
    layout_width/height
    传递(并移除约束)
  • 覆盖图\u full
    中设置大小:


该代码在API 28中按预期工作,我也在API 28中进行了测试。您知道如何在早期的API版本中进行这种缩放吗?

您可以尝试以下方法:

<ImageView
    android:id="@+id/overlay"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:alpha="1."
    android:background="@drawable/overlay_full"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>
<ImageView
    android:id="@+id/overlay"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:scaleType="center"
    android:background="@drawable/just_the_background"
    app:srcCompat="@drawable/ic_smartphone_black_24dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>


此外,您不需要在布局中直接使用
AppCompat
视图,只需让库为您处理这个问题(它们在构建时自动替换)。只有在扩展它们以添加自定义功能时,才需要使用它们。

谢谢!这是可行的,但我担心它将如何扩展到不同的屏幕大小:无论屏幕大小如何,图像现在不是24dp吗?(因此缩放比例将不同于仅缩放背景)?是的,它将始终为24dp(或在向量的XML中设置高度/宽度的任何值)。您能描述一下您希望它如何缩放吗?要根据屏幕大小缩放图像,一个选项是使用
android:scaleType=“fitCenter”
,您可以添加填充以创建边框。我的最终目标是拥有一个带有一些静态元素的背景和一个带有动画手机的前景。我担心,如果我在边框上添加填充,Android会自动缩小我的图像,因为它会因为动画而移动,以适应屏幕上的所有内容(包括填充)。另一方面,如果始终为24dp,则每当背景缩放到不同大小时,它可能会与背景的静态元素相交。我希望背景和前景的比例在一起,手机不会占据整个屏幕(无论是物理还是通过填充)。WDYT?在这一点上,听起来可能值得在
ConstraintLayout
中使用多个视图,并以不重叠的方式对它们进行约束,例如使用链或仅将它们相对放置。如果您可以添加一个图像来演示您试图实现的目标(例如线框),那么提供更完整的答案可能会更容易。