如何在Android上相对于另一个图像设置图像位置

时间:2015-07-13 10:03:23

标签: android image

我试着解释我的问题。我有两个ImageViews。 其中一个是背景图像,也很大。

此背景图像还具有缩放功能。另一张图片是一张尺寸为36x36的小图片。

小图像可以在屏幕上移动:

public boolean onTouch(View view, MotionEvent event) {
    final int X = (int) event.getRawX();
    final int Y = (int) event.getRawY();
    //Definition MotionEvent.ACTION_MASK: Bit mask of the parts of the action code that are the action itself.
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
            _xDelta = X - lParams.leftMargin;
            _yDelta = Y - lParams.topMargin;
            break;
        case MotionEvent.ACTION_UP:
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            break;
        case MotionEvent.ACTION_POINTER_UP:
            break;
        case MotionEvent.ACTION_MOVE:
            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
                    .getLayoutParams();
            layoutParams.leftMargin = X - _xDelta;
            layoutParams.topMargin = Y - _yDelta;
            layoutParams.rightMargin = -250;
            layoutParams.bottomMargin = -250;
            view.setLayoutParams(layoutParams);
            break;
    }
    viewGroup.invalidate();
    return true;
}

如果我放大背景图像,小图像不会缩放。它的位置对于屏幕是绝对的,而不是图像。

如何让小图像相对于大图像?

我希望我的问题很清楚。

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

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/skizze"
        android:scaleType="matrix"
        />

    <ImageView
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/feuerloescher"
        android:layout_gravity="center_horizontal|top"
        android:layout_alignParentTop="false"
        android:src="@drawable/feuerloescher"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="false" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

尝试使用android:layout_below="@id/skizze"

尝试以下xml代码

<ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/skizze"
        android:scaleType="matrix"
        />

    <ImageView
        android:layout_width="55dp"
        android:layout_height="55dp"
        android:id="@+id/feuerloescher"
        android:layout_gravity="center_horizontal|top"
        android:layout_alignParentTop="false"
        android:src="@drawable/feuerloescher"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="false"
        android:layout_below="@id/skizze" />

答案 1 :(得分:0)

我知道这是一篇旧帖子,但以防万一它有助于我遇到同样的问题并且能够按如下方式解决它。

android:layout_alignTop="@id/app_bg_fill"

"alignTop" 似乎是关键线。完整代码如下。

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_bg_fill"
    android:orientation="vertical" >

<ImageView
    android:id="@+id/app_bg_fill"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginBottom="60dp"
    android:layout_marginTop="100dp"
    android:scaleType="fitEnd"
    android:src="@drawable/guide_item_2f"
    android:background="@drawable/view_frame_style" />
     

<TextView
    android:layout_width="match_parent"
    android:layout_height="100sp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="20sp"
    android:layout_marginRight="20sp"
    android:layout_marginBottom="20sp"
    android:background="#00000000"
    android:layout_centerInParent="true"
    android:padding="12sp"
    android:text="SomeText"
    android:layout_alignTop="@id/app_bg_fill" 
    android:textColor="#000000" />

 </RelativeLayout>