5

我确实使用 PhotoView 库来放大。现在,当用户单击一个按钮时,我准备旋转 PhotoView,高度和宽度会旋转。所以宽度小于屏幕高度。这导致在旋转 Imageview 之前我无法像往常一样获得全屏缩放。

因此,任何使旋转后的新宽度或高度成为全屏的解决方案。

示例:这是缩放图像,它不会像旋转之前那样放大整个屏幕

这是放大的图像

4

3 回答 3

1

我必须在我的项目中使用相同类型的功能,这是我的设计和实现。

照片视图的基本XML设计

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
    tools:context=".MainActivity">

    <com.github.chrisbanes.photoview.PhotoView
        android:id="@+id/image_main"
        android:layout_width="0dp"
        android:scaleType="centerCrop"
        android:layout_height="400dp"
        android:src="@drawable/gull_portrait_ca_usa"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <ImageView
        android:id="@+id/image_rotate"
        android:src="@android:drawable/ic_menu_rotate"
        android:layout_margin="16dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_width="40dp"
        android:layout_height="40dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

然后我只更新方向onClick事件。

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        binding.imageRotate.setOnClickListener {
            binding.imageMain.rotation = binding.imageMain.rotation+90
        }

    }
}

输出

于 2021-12-15T17:56:40.690 回答
0

如果图像将被旋转,它将根据他的纵横比在屏幕中进行调整。如果你想让它适合全屏,图像会变硬,看起来不太好。如果您仍然想这样做,只需在“图像资源”的位置使用图像作为“背景”,并将视图长度和宽度保持为“匹配父级”。

请参见下面的示例视图:

<ImageView
    android:id="@+id/mainImageID"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/yourImage"/>
于 2021-12-05T01:31:11.593 回答
0

您需要创建 2 个 xml 布局。纵向(您已经在 res > layout 文件夹中创建的那个)和横向(在 res > layout-land 内)。

当您旋转手机时,fragment 会在 layout-land 文件夹中加载 xml 文件。

您可以在此处找到教程:https ://www.geeksforgeeks.org/how-to-create-landscape-layout-in-android-studio/

更多信息在这里:https ://developer.android.com/guide/topics/resources/providing-resources

于 2021-12-04T18:35:49.227 回答