从Drawable创建一个没有像素透明度的形状

时间:2016-06-06 09:25:06

标签: java android shape rect

我试图从Drawable创建一个Shape或一个Rect但没有Drawable的透明度。

正如您在此处所见,以下按钮的边框具有透明度。我的问题是我正在创建一个面板编辑器,我想在移动一个小部件时避免重叠小部件。 为此,我使用了方法:Rect.intersects(Rect)

enter image description here

然而,使用的Rect是整个drawable(具有透明度)的形状,并且它创建了太多的空白空间。

编辑:更多信息

这是我的编辑,我成功避免叠加,但叠加是基于drawable(图片)的形状。图片的透明度在我的面板上创造了一些空白区域。

enter image description here

和我的检查碰撞代码,其中tempRect是当前的移动小部件

public boolean checkCollision(Rect tempRect,ArrayList<IHMObject> listWidget) {
    float dimen = activity.getResources().getDimension(R.dimen.abc_action_bar_default_height)+ 38;
    for(IHMObject widget  :listWidget ){
        int[]location = new int[2];
        View v =(View)widget.getView();
        v.getLocationInWindow(location);
        //vérifier la postion du widget en fonctions des autres widgets de l'IHM
        Rect staticRect = new Rect(location[0],location[1]-(int)dimen,location[0]+v.getWidth(),location[1]+v.getHeight()-(int)dimen);
        if (this.id!=widget.id){
            if (staticRect.intersect(tempRect)) {
                //il y a une collision entre les deux rectangles
                return true;
            }
        }

    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

Create a round_shape.xml file in drawable folder like below


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <!-- you can use any color you want I used here gray color-->
    <solid android:color="#ABABAB"/> 
    <corners android:radius="10dp"/>
</shape>

Set this Draweble like below

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textColor="#ffffff"
    android:src="@drawable/round_shape" // here is your round_shape
    android:background="#000000"
    android:text="Buttons" />