缩放和重叠ImageView

时间:2015-04-29 11:31:56

标签: android imageview android-linearlayout relativelayout

我有点像一个Android菜鸟,并且长期以来一直在努力解决这个问题。

我的目标是什么: 两个ImageViews。第一个是屏幕的宽度,并绘制以匹配其src图像的比例(到目前为止这么容易)。第二个ImageView需要缩放,因此其宽度是第一个图像的固定倍数(在0和1之间)。 我最终需要能够在第一个固定图像的顶部触摸拖动第二个较小的图像,尽管这部分不是这个问题的重点。

这通常都是以编程方式完成的,因为直到运行时才知道src图像和比例倍数。

我尝试了什么:我可以使用ImageViewsRelativeLayout中覆盖两个alignParentTop,依此类推。这很好用,但在这种情况下我无法看到如何缩放图像。

我可以使用ImageViews缩放两个LinearLayout,将layout_weights分别设置为1和缩放倍数。在这种情况下,我不能让图像重叠(不是严格来说 - 我用负边距管理它,但它是一个非常hacky的解决方案,并且几乎不可能在以后实现顶部图像的移动。)< / p>

所以我的问题是:有没有办法解决我试图实现的两个解决方案中的任何一个?或者是否有更好的方法来解决问题? (我不一定在代码中寻找答案,只是我应该采取的方法)

1 个答案:

答案 0 :(得分:0)

请理解我的理解

您可以使用约束布局

将第一个ImageView放置在所需的位置 对你父母有约束

在所需位置放置第二个ImageView 对父母有约束(没有其他任何孩子的看法) 该方法是,如果将SubView放入具有Constraints to Parent的ConstraintLayout中,则可以在不影响其他视图的情况下进行操作(缩放/转换)。

要在运行时更改视图的位置,可以使用 view.setTranslationX()和view.setTranslationY();

您还可以通过对父项的约束以编程方式创建视图 (我的个人喜好)

您可以使用它在ConstraintLayout中覆盖不同的视图

<ImageView
        android:id="imageID1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        
        android:src="yourImageStable"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        
// put your own constraints-
        app:layout_constraintBottom_toBottomOf="parent"  
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </ImageView>

    <ImageView
        android:id="imageID2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:src="yourImageUnStable"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"

        
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

Note: This two constraint value will draw an ImageView from the Top-Left 
corner of the Parent View (on Position x=0, y=0)

Remember: the View which you want to overlay should be written next to the other,
like here ImageID2 can overlay ImageID1.


    </ImageView>
相关问题