【问题标题】:Scaling and overlapping ImageViews缩放和重叠 ImageView
【发布时间】:2015-04-29 11:31:56
【问题描述】:

我是一个安卓菜鸟,并且已经为这个问题苦苦挣扎太久了。

我的目标: 两个ImageViews。第一个将是屏幕的宽度,并根据其 src 图像的比例进行绘制(到目前为止很容易)。第二张ImageView 需要进行缩放,使其宽度是第一张图片的固定倍数(0 到 1 之间)。 然后我最终需要能够在第一个固定图像的顶部触摸拖动第二个较小的图像,尽管这部分不是这个问题的重点。

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

我尝试过的:我可以在RelativeLayout 中覆盖两个ImageViews,使用alignParentTop 等等。这很好用,但在这种情况下我看不到如何缩放图像。

我也可以使用LinearLayout 来缩放这两个ImageViews,方法是将它们的layout_weights 分别设置为1 和缩放倍数。但是,在这种情况下,我无法让图像重叠(严格来说并非如此 - 我已经用负边距进行了管理,但这是一个非常老套的解决方案,并且以后几乎不可能实现顶部图像的移动)。

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

【问题讨论】:

    标签: android imageview android-linearlayout android-relativelayout


    【解决方案1】:

    按照我的理解,

    您可以使用约束布局

    将第一个 ImageView 放在您想要的位置 对你的父母有限制

    将第二个 ImageView 放在您想要的位置 对父母有限制(没有任何其他孩子的观点) 方法是,如果您将 SubView 放在 ConstraintLayout 中,并带有对 Parent 的约束,您可以操作(缩放/平移)而不会对其他视图产生任何影响。

    要在运行时更改视图的位置,您可以使用 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>
    

    【讨论】:

    • 请更准确
    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 2015-10-18
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多