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 并将可调整大小的 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 回答
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 回答