画面上の特定の場所に可変数の画像を配置するビューを Android で作成する必要があります。私の問題は、この位置が画面のサイズによって変化しないことです。さらに、その位置は背景画像に対して相対的でなければなりません。たとえば、家のイメージがあり、窓とドアを固定座標で配置する必要があります。提案?
2 に答える
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);
}
于 2013-10-08T17:16:28.423 に答える
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>
于 2013-10-08T13:45:58.797 に答える