我试图从Drawable创建一个Shape或一个Rect但没有Drawable的透明度。
正如您在此处所见,以下按钮的边框具有透明度。我的问题是我正在创建一个面板编辑器,我想在移动一个小部件时避免重叠小部件。
为此,我使用了方法:Rect.intersects(Rect)
然而,使用的Rect是整个drawable(具有透明度)的形状,并且它创建了太多的空白空间。
编辑:更多信息
这是我的编辑,我成功避免叠加,但叠加是基于drawable(图片)的形状。图片的透明度在我的面板上创造了一些空白区域。
和我的检查碰撞代码,其中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;
}
答案 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" />