imageView的屏幕上的特定位置

时间:2013-10-08 13:37:35

标签: android

我需要在Android中创建一个视图,该视图涉及在屏幕上的特定位置放置可变数量的图像。我的问题是这个位置不应该根据屏幕的大小而变化。此外,其位置必须相对于背景图像。 例如,我有一个房子的形象,我必须通过一些固定的坐标安排窗户和门。 建议?

2 个答案:

答案 0 :(得分:1)

除了您对如何检测MotionEvents的评论之外,还要将以下方法添加到LayeredImageView:

public List<Layer> getLayersAt(float x, float y) {
    Iterator<Layer> iter = mLayers.iterator();
    List<Layer> list = new LinkedList<Layer>();
    RectF rect = new RectF();
    Matrix m = getImageMatrix();

    while (iter.hasNext()) {
        Layer layer = iter.next();
        rect.set(layer.drawable.getBounds());
        layer.matrix.mapRect(rect);
        m.mapRect(rect);
        if (rect.contains(x, y)) {
            list.add(layer);
        }
    }
    return list;
}

你可以这样称呼它:

public boolean onTouch(View v, MotionEvent event) {
    float x = event.getX();
    float y = event.getY();
    List<Layer> list = iv.getLayersAt(x, y);
}

答案 1 :(得分:0)

您可以为您的LinearLayout使用android:weightSum属性,然后根据权重数字将您对LinearLayout的观点与android:layout_weight划分。我在这里有一个例子:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="70"
    android:gravity="bottom|center_horizontal"
    android:orientation="horizontal"
    android:weightSum="100" >

    <ImageView
        android:id="@+id/ivHamsa"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="50"
        android:scaleType="fitCenter"
        android:src="@drawable/hamsa_icon" />
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="5"
    android:orientation="horizontal" >
</LinearLayout>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="20"
    android:gravity="top|center_horizontal"
    android:orientation="horizontal"
    android:weightSum="100" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="70"
        android:gravity="top|center_horizontal"
        android:orientation="horizontal"
        android:weightSum="100" >

        <ImageView
            android:id="@+id/ivAndroid"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="20"
            android:scaleType="fitCenter"
            android:background="@drawable/rounded_white"
            android:layout_margin="5dp"
            android:src="@drawable/android_icon" />

        <ImageView
            android:id="@+id/ivBook"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="20"
            android:scaleType="fitCenter"
            android:background="@drawable/rounded_white"
            android:layout_margin="5dp"
            android:src="@drawable/book_icon" />

        <ImageView
            android:id="@+id/ivMusic"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="20"
            android:scaleType="fitCenter"
            android:background="@drawable/rounded_white"
            android:layout_margin="5dp"
            android:src="@drawable/music_icon" />

        <ImageView
            android:id="@+id/ivVideo"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="20"
            android:scaleType="fitCenter"
            android:background="@drawable/rounded_white"
            android:layout_margin="5dp"
            android:src="@drawable/video_icon" />

        <ImageView
            android:id="@+id/ivPhoto"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="20"
            android:scaleType="fitCenter"
            android:background="@drawable/rounded_white"
            android:layout_margin="5dp"
            android:src="@drawable/photo_icon" />
    </LinearLayout>

</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="5"
    android:orientation="horizontal" >
</LinearLayout>