我们如何创建如下的ballon drawable形状.我们可以动态地改变它的颜色.

所以我将需要在我的应用程序中使用路径数据,有没有办法将您已有的图像转换为路径数据?
或唯一的方法是使用Photoshop等自己实际计算所有像素.?
我想通过使用XML定义使用按钮(TextView)创建它:

在我的活动布局中:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_arrow" <!-- I NEED IMPLEMENT THIS -->
android:clickable="true"
android:drawablePadding="7dp"
android:gravity="center"
android:drawableLeft="@drawable/music_cloud"
android:onClick="exportSong"
android:padding="20dp"
android:text="@string/export_upload"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/dark_yellow_text_color"
android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)
我创建了几个帖子:
我尝试修改几个XML定义,但没有什么是好的.如何实现这种形状有一些简单的方法吗?它也应该有一个透明的背景.
我正在尝试为我的textview制作平行四边形背景,但它没有正确显示...它显示以下输出

<layer-list >
<item>
<rotate
android:fromDegrees="10"
android:toDegrees="10"
android:pivotX="-40%"
android:pivotY="87%" >
<shape
android:shape="rectangle" >
<stroke android:color="#000000" android:width="10dp"/>
</shape>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
我需要像这样的输出........

我遵循了这个教程:http://looksok.wordpress.com/2013/08/24/android-triangle-arrow-defined-as-an-xml-shape/
本教程用于创建自定义箭头作为递增/递减按钮,而无需使用图像.箭头的形状很好但是向上箭头的位置使其底部位于按钮视图的底部,而向下箭头的底部位于按钮视图的顶部.换句话说,箭头没有正确对齐.

我想知道,按钮视图是否有某种y轴偏移可以用来更好地定位箭头?我的代码是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/arrow_up"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/custom_arrow" />
<Button
android:id="@+id/arrow_down"
android:layout_width="75dp"
android:layout_height="75dp"
android:rotation="180"
android:layout_toRightOf="@id/arrow_up"
android:background="@drawable/custom_arrow" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
custon_arrow.xml是:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<!-- android:pivotX="-40%" -->
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="-20%"
android:pivotY="88%" >
<shape
android:shape="rectangle" >
<stroke android:color="@color/transparent" android:width="5dp"/>
<solid
android:color="@color/grey_shade" />
</shape>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud) 在XML中,我试图绘制一个下拉三角形作为按钮的背景,但似乎无法绕过旋转的XML标签.
这是我的XML代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="80%"
android:pivotY="20%">
<shape
android:shape="rectangle" >
<solid
android:color="#FFCC00" />
</shape>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
这是XML的结果:

任何想法都表示赞赏.
我必须设计一个三角形并在其中显示一些角度为45的文本,我必须将文本视图放在三角形的边界之外以显示其他文本.它就像一面旗帜.但是,当我使用相对布局并放置三角形背景时,它仍然充当矩形,遮挡了我的文本视图.以下是我使用的代码:
<RelativeLayout
android:id="@+id/relative"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/image_sticker" >
<com.example.AngledTextView
android:id="@+id/textViewx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:rotation="52"
android:textColor="#FFFFFF" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的AngledTextView类:
public class AngledTextView extends TextView {
private int mWidth;
private int mHeight;
public AngledTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
/*Paint textPaint = new Paint();
int xPos = (canvas.getWidth() / 2);
int yPos = (int) ((canvas.getHeight() / 2) - ((textPaint.descent() + textPaint.ascent()) / 2)) ;
canvas.rotate(45, xPos,yPos); */
super.onDraw(canvas);
canvas.restore();
}
} …Run Code Online (Sandbox Code Playgroud)