0

RelativeLayout 内に次のようなものがあります。

<ImageView android:id="@+id/picture"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:scaleType="centerCrop"
           android:src="@drawable/pic"/>

    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:background="@color/black"
                  android:orientation="vertical">

        <ImageView android:layout_width="fill_parent"
                   android:layout_height="fill_parent"
                   android:layout_margin="50dp"
                   android:background="@color/transparent"
                   android:id="@+id/ivSelection"/>
</LinearLayout>

LinearLayout を黒く、ivSelection を透明にしたい。ivSelection を通じて、ivPicture の画像を見たいと思います。ivSelection のマージンは変更可能であり、もちろん、この「ウィンドウ」も変更可能 (サイズ変更可能) でなければなりません。そのようなもの: http://img818.imageshack.us/img818/8382/selm.jpg

出来ますか?

4

2 に答える 2

0

これを試して、

   <ImageView android:layout_width="fill_parent"
                   android:layout_height="fill_parent"
                   android:background="@color/black" 
                   android:src="@drawable/pic"
                   android:padding="10dp"
                   android:id="@+id/ivSelection"/>
于 2012-10-15T13:42:52.463 に答える
0

考えられる解決策: ImageView をもう 1 つ作成し、サイズ変更可能な ivSelection の色を透明に設定します。

<ImageView android:id="@+id/picture"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:scaleType="centerCrop"
           android:src="@drawable/pic"/>

<ImageView android:id="@+id/drawSelection"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent" />

<LinearLayout android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@color/transparent"
              android:orientation="vertical">

        <ImageView android:layout_width="fill_parent"
                   android:layout_height="fill_parent"
                   android:layout_margin="50dp"
                   android:background="@color/transparent"
                   android:id="@+id/ivSelection"/>
</LinearLayout>

ivSelection のマージンを変更するときは、次のようにする必要があります。

Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
Paint p = new Paint();
p.setColor(R.color.black);
c.drawRect(0, 0, w, h, p);

Xfermode mode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
p.setXfermode(mode);
p.setColor(0xFFFFFFFF);
c.drawRect(sel.leftMargin,
           sel.topMargin,
           w - sel.rightMargin,
           h - sel.bottomMargin, p);

drawSelection.setImageBitmap(bmp);
于 2012-10-15T14:19:41.597 に答える