Java 当我在设备上运行UI(USB调试)时,UI会失真,但在AVD上运行正常

Java 当我在设备上运行UI(USB调试)时,UI会失真,但在AVD上运行正常,java,android,xml,android-layout,Java,Android,Xml,Android Layout,我在android studio中构建了一个布局,它在我的AVD上看起来是一样的,但在我的设备上运行时却不一样。 这是我布局的xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@

我在android studio中构建了一个布局,它在我的AVD上看起来是一样的,但在我的设备上运行时却不一样。 这是我布局的xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mLayout"
android:layout_width="match_parent"
tools:context=".toggled_meditate"
android:layout_height="match_parent"
>

<Button
    android:id="@+id/togglemeditate"
    android:layout_width="197dp"
    android:layout_height="244dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_marginStart="197dp"
    android:layout_marginLeft="197dp"
    android:layout_marginTop="134dp"
    android:layout_marginEnd="17dp"
    android:layout_marginRight="17dp"
    android:layout_marginBottom="281dp"
    android:background="@drawable/togglebutton"
    android:transitionName="toggle" />

<ImageView
    android:id="@+id/togglehome"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentBottom="true"
    android:layout_marginStart="0dp"
    android:layout_marginTop="0dp"
    android:layout_marginEnd="0dp"
    android:layout_marginBottom="0dp"
    android:background="@drawable/actionscreen"
    android:transitionName="imageTransition" />
</RelativeLayout>

这是我在android studio中的输出,

这是我在Galaxy S9中运行时的输出,

我已经实现了不同密度和大小的布局(hdpi、mdpi、xhdpi、normal、large、x-large等等),但结果仍然是一样的,我在这里做错了什么

ps my home screen-

如果可以,您可以避免在视图中使用所有固定大小的尺寸,从而使布局更具响应性

下面是使用
ConstraintLayout
的示例:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent">


<Button
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="Button"
    app:layout_constraintWidth_percent=".5"
    app:layout_constraintHeight_percent=".5"
    app:layout_constraintBottom_toTopOf="parent"
    app:layout_constraintEnd_toStartOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="parent" />

<ImageView
    android:id="@+id/imageView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    android:scaleType="fitXY"
    tools:srcCompat="@tools:sample/avatars[12]" />

</android.support.constraint.ConstraintLayout>
根据屏幕大小,以百分比(而不是固定大小)确定视图的大小。这将确保我的布局对所有屏幕大小都有响应。

如果可以,您可以避免在视图中使用所有固定大小的尺寸,从而使布局具有响应性

下面是使用
ConstraintLayout
的示例:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent">


<Button
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="Button"
    app:layout_constraintWidth_percent=".5"
    app:layout_constraintHeight_percent=".5"
    app:layout_constraintBottom_toTopOf="parent"
    app:layout_constraintEnd_toStartOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="parent" />

<ImageView
    android:id="@+id/imageView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    android:scaleType="fitXY"
    tools:srcCompat="@tools:sample/avatars[12]" />

</android.support.constraint.ConstraintLayout>


根据屏幕大小,以百分比(而不是固定大小)确定视图的大小。这将确保我的布局对所有屏幕大小都有响应。

图像分辨率是多少?取决于,我已从adobe XD导入背景图像,因此根据不同文件夹(可绘制hdpi、可绘制xhdpi、可绘制mdpi等)中的密度,我对同一图像有不同的分辨率设置按钮高度和宽度的固定dp的原因是什么?dp值对于不同的设备是不同的。因为我想给它一个更美观的外观,这个活动是从主屏幕调用的,因为我想给它一个放大的动画,我还有3个类似这样的活动用于3个按钮,如果我给包装内容,它会创建不同的按钮大小,失去它的美观效果,我将附上我的主屏幕快照,以帮助您更好地理解,然后使用dimens.xml映射出各种屏幕大小的dp值。在imageview中也用src替换背景。使用scaleType调整图像大小。图像分辨率是多少?具体取决于,我已从adobe XD导入背景图像,因此根据不同文件夹(可绘制hdpi、可绘制xhdpi、可绘制mdpi等)中的密度,我对同一图像有不同的分辨率设置按钮高度和宽度的固定dp的原因是什么?dp值对于不同的设备是不同的。因为我想给它一个更美观的外观,这个活动是从主屏幕调用的,因为我想给它一个放大的动画,我还有3个类似这样的活动用于3个按钮,如果我给包装内容,它会创建不同的按钮大小,失去它的美观效果,我将附上我的主屏幕快照,以帮助您更好地理解,然后使用dimens.xml映射出各种屏幕大小的dp值。在imageview中也用src替换背景。使用scaleType调整图像大小。当我在AVD上运行它时,这段代码会导致一个白色的空白屏幕,但在我的设计预览中显示良好。另外,空白屏幕是响应的,我可以通过按钮来触发意图,通过瞎猜它的位置并点击它。你是否改变了“工具:SRCCOMPAT= =”工具:样本/化身(12)?“@drawable/togglebutton
?因为
tools`只会影响您的预览,而不会影响实际设备。不,我不认为这是原因,请尝试删除您可能具有的任何
tools
属性,并提供您想要的背景视图我没有注意到,我的错,这解决了我的问题,非常感谢:)当然,如果这有帮助,请接受答案,这样它就可以帮助其他开发人员解决同样的问题。当我在AVD上运行该代码时,它会出现一个白色的空白屏幕,但在我的设计预览中显示良好。另外,空白屏幕是响应的,我可以通过按钮来触发意图,通过瞎猜它的位置并点击它。你是否改变了“工具:SRCCOMPAT= =”工具:样本/化身(12)?“@drawable/togglebutton
?因为
tools`只会影响您的预览,而不会影响实际设备。不,我不认为这是原因,请尝试删除您可能具有的任何
tools
属性,并提供您想要的背景视图我没有注意到,我的错,这解决了我的问题,非常感谢:)当然,如果这有帮助,请接受答案,这样它就可以帮助其他开发人员解决同样的问题